
钱晓捷-汇编语言程序设计课后习题(作业新)(共40页).doc
40页精选优质文档-----倾情为你奉上目 录4103581471.1 简述计算机系统的硬件组成及各部分作用1.2 明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB,MB,GB和TB1.3 什么是汇编语言源程序、汇编程序、目标程序?1.4 汇编语言与高级语言相比有什么优缺点?1.5 将下列十六进制转化为二进制和十进制表示1) FFH (2)0H (3)5EH (4)EFH(5)2EH (6)10H (7)1FH (8)ABH1.6 将下列十进制数转换为BCD码表示1)12 (2)24 (3)68 (4)127(5)128 (6)255 (7)1234 (8)2458解答:十进制数 BCD码122468127 1128 0255 11234 101002458 110001.7 将下列BCD码转换为十进制数1) (2) (3) (4)(5) (6) (7) (8)解答:BCD码 十进制数 91 89 36 90 08 97 81 021.8 将下列十进制数分别用八位二进制数的原码、反码和补码表示。
1)0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128 (8)681.9 完成下列二进制数的计算1)1011+1001 (2)1011-1001 (3)10111001 (4)/1001(5)1011∧1001 (6)1011∨1001 (7)~1011 (8)1011⊕10011.10 数码0~9,大写字母A~Z,小写字母a~z,对应的ASCII码分别是多少?ASCII码为0dH,0aH对应的是什么字符?解答:大写字母A~Z,对应的ASCII码分别是41H~5AH小写字母a~z,对应的ASCII码分别是61H~7AHASCII码为0dH,0aH分别对应“回车”、“换行”1.11 计算机中有一个“”编码,如果把它认为是无符号数,它是十进制什么数?如果你认为它是BCD码,则表示什么数?如果它是某个ASCII码,则代表哪个字符?1.12 简述Intel80x86系列微处理器在指令集方面的发展1.13 什么是DOS和ROM-BIOS?1.14 简述PC最低1MB贮存空间的使用情况1.15 罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。
1.16 什么是标志?它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义1.17 举例说明CF和OF标志的差异解答:溢出标志OF和进位标志CF是两个意义不同的标志进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确例1:3AH + 7CH=B6H无符号数运算:58+124=182,范围内,无进位有符号数运算: 58+124=182 ,范围外,有溢出例2:AAH + 7CH=(1)26H无符号数运算:170+124=294,范围外,有进位有符号数运算:-86+124=28 ,范围内,无溢出1.18 字和双字在存储器中如何存放,什么是“小端方式”?对字和双字存储单元,什么是它们的对齐地址?为什么要对齐地址?1.19 什么是8086中的逻辑地址和物理地址?逻辑地址如何转换为物理地址?请将如下逻辑地址用物理地址表示(表达地址默认采用十六进制):(1) FFFF:0 (2)40:17 (3)2000:4500 (4)B821:4567解答:对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从00000H~FFFFFH在8086内部和用户编程时,采用的段基地址 : 段内偏移地址形式称为逻辑地址将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址请将如下逻辑地址用物理地址表达:(1)FFFFh:0=FFFF0H(2)40h:17h=00417H(3)2000h:4500h=24500H(4)B821h:4567h=BC777H1.20 8086有哪4种逻辑段?各种逻辑段分别是什么用途?解答:代码段(Code Segment)用来存放程序的指令序列。
处理器利用CS : IP取得下一条要执行的指令堆栈段(Stack Segment)确定堆栈所在的主存区域处理器利用SS : SP操作堆栈中的数据数据段(Data Segment)存放当前运行程序所用的数据处理器利用DS : EA存取数据段中的数据附加段(Extra Segment)是附加的数据段,也用于数据的保存处理器利用ES : EA存取数据段中的数据1.21 数据的默认段是哪个?是否允许其他段存放数据?如果允许,如何实现?有什么要求?1.22 什么是操作码、操作数和寻址方式?有哪三种给出操作数的方法?1.23 什么是有效地址EA?8086的操作数如果在主存中,有哪些寻址方式可以存取它?1.24 说明下列指令中源操作数的寻址方式?如果BX=2000H,DI=40H,给出DX的值或有效地址EA的值1) Mov dx,[1234h](2) Mov dx,1234h(3) Mov dx,bx(4) Mov dx,[bx](5) Mov dx,[bx+1234h](6) Mov dx,[bx+di](7) Mov dx,[bx+di+1234h]解答:(1)mov dx,[1234h] ;直接寻址,EA=1234h(2)mov dx,1234h ;立即数寻址,DX=1234h(3)mov dx,bx ;寄存器寻址,DX=2000h(4)mov dx,[bx] ;间接寻址,EA=2000h(5)mov dx,[bx+1234h] ;相对寻址,EA=3234h(6)mov dx,[bx+di] ;基址变址寻址,EA=2040h(7)mov dx,[bx+di+1234h] ;相对基址变址寻址,EA=3274h2.1 已知DS=2000H,BX=0100H,SI=0002H,存储单元[20100H]~[20103]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行后AX寄存器的内容。
1) Mov ax,1200h(2) Mov ax,bx(3) Mov ax,[1200h](4) Mov ax,[bx](5) Mov ax,[bx+1100h](6) Mov ax,[bx+si](7) Mov ax,[bx][si+1100h]解答:(1)mov ax,1200h ;AX=1200h(2)mov ax,bx ;AX=0100h(3)mov ax,[1200h] ;AX=4C2Ah(4)mov ax,[bx] ;AX=3412h(5)mov ax,[bx+1100h] ;AX=4C2Ah(6)mov ax,[bx+si] ;AX=7856h(7)mov ax,[bx][si+1100h] ;AX=65B7h2.2 指出下列指令的错误(1) mov cx,dl (2)mov ip,ax(3) mov es,1234h (4)mov es,ds(5) mov al,300 (6)mov [sp],ax(7) mov ax,bx+di (8)mov 20h,ah2.3 已知数字0~9对应的格雷码依次为:18H,34H,05H,06H,09H,0AH,0CH,11H,12H,14H,它存在于以table为首地址(设为200H)的连续区域中。
为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果Lea bx,tableMov al,8Xlat2.4 什么是堆栈?他的工作原则是什么?它的基本操作有哪两个?对应哪两种指令?2.5 已知SS=2200H,SP=00B0H,画图说明执行下列指令序列时,堆栈区和SP的内容如何变化?Mov ax,8057hPush axMov ax,0f79hPush axPop bxPop [bx]解答:mov ax,8057hpush axmov ax,0f79hpush axpop bx ;bx=0f79hpop [bx];DS:[0f79h]=8057h2.6 给出下列各条指令执行后AL的值,以及CF,ZF,SF,OF,PF的状态:Mov al,89hAdd al,alAdd al,9dhCmp al,0bchSub al,alDec alInc al解答:mov al,89h ;AL=89h CF ZF SF OF PFadd al,al ;AL=12h 1 0 0 1 1add al,9dh ;AL=0afh 0 0 1 0 1cmp al,0bch;AL=0afh 1 0 1 0 1sub al,al ;AL=00h 0 1 0 0 1dec al ;AL=0ffh 0 0 1 0 1inc al ;AL=00h 0 1 0 0 12.7 设X,Y,Z均为双字数据,分别存放在地址为X,X+2;Y,Y+2;Z,Z+2的存储单元中,它们的运算结果存入W单元。
阅读以下程序段,给出运算公式Mov ax,XMov dx,X+2Add ax,YAdc dx,Y+2Add ax,24Adc dx,0Sub ax,ZSbb dx,Z+2Mov W,axmov W+2,dx解答:W=X+Y+24-Z2.8 请分别用一条汇编语言指令完成如下功能:(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器ADD DX,BX(2) 用寄存器BX和SI的基址变址寻址方式把存储器的1字节与AL寄存器的内容相加,并把结果送到AL中ADD AL,[BX+SI](3) 用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中ADD [BX+0B2H],CX(4) 用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中ADD WORD PTR [0520H],3412H(5) 把数0A0H与AL寄存器的内容相加,并把结果送回AL中ADD AL,0A0H2.9 设X,Y,Z,V均为十六位带符号数,分别装在X,Y,Z,V存储单元中,阅读以下程序段,得出它的运算公式,并说明运算结果存于何处。
Mov ax,XImul YMov cx,axMov bx,dxMov ax,ZCwdAdd cx,axAdc bx,dxSub cx,540Sbb bx,0Mov ax,vCwdSub ax,cxSbb dx,bxIdiv X2.10指出下列指令的错误(1) xchg[si]30h(2) Pop cs(3) Sub[si],[di](4) Push ah(5) Adc ax,ds。
