80 x86汇编语言程序的设计(第2版)复习题答案

上传人:l**** 文档编号:130184056 上传时间:2020-04-25 格式:DOC 页数:39 大小:179.50KB
返回 下载 相关 举报
80 x86汇编语言程序的设计(第2版)复习题答案_第1页
第1页 / 共39页
80 x86汇编语言程序的设计(第2版)复习题答案_第2页
第2页 / 共39页
80 x86汇编语言程序的设计(第2版)复习题答案_第3页
第3页 / 共39页
80 x86汇编语言程序的设计(第2版)复习题答案_第4页
第4页 / 共39页
80 x86汇编语言程序的设计(第2版)复习题答案_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《80 x86汇编语言程序的设计(第2版)复习题答案》由会员分享,可在线阅读,更多相关《80 x86汇编语言程序的设计(第2版)复习题答案(39页珍藏版)》请在金锄头文库上搜索。

1、习题参考答案1第1章1-1汇编的主要功能:输入:汇编语言源文件输出:目标文件处理:对源文件进行语法检查;将符号指令翻译为机器指令。连接的主要功能:输入:1个或多个目标文件与库文件输出:可执行文件处理:浮动地址的重定位;多模块的连接。1-2 (1)2EH(2)0D2H(3)0FFH(4)80H(5)7FH(6)0FEH1-3 (1)7FH(2)0FF80H(3)0FFFFH(4)0FFD2H(5)8000H(6)0FFH1-4 无符号数围:02n-1;带符号数围:-2 n1 2 n1-11-5 (1)压缩BCD码:58H;非压缩BCD码:x5x8H。(2)压缩BCD码:1624H;非压缩BCD码

2、:x1x6x2x4H。1-6 (1)字符1的ASCII码;十进制数31的压缩BCD码;十进制数1的非压缩BCD码;十进制数49的十六进制表示。(2)十进制数-1的8位二进制补码表示;带符号数255的16位二进制补码表示;无符号数255的8位二进制形式。(3)十进制数-1的16位二进制补码表示;带符号数65535的32位二进制补码表示;无符号数65535的16位二进制形式。1-7 (1)作为无符号数为159,等值的16位和32位形式均为9FH;作为带符号数为-97,等值的16位和32位形式分别为0FF9FH与0FFFFFF9FH。(2)作为无符号数和带符号数均为104,等值的16位和32位形式均

3、为68H。(3)作为无符号数为192,等值的16位和32位形式均为0C0H;作为带符号数为-64,等值的16位和32位形式分别为0FFC0H与0FFFFFFC0H。1-8 (1)AND 0FH (2)OR 30H(3)右移4位可得高位的值;将原值AND 0FH可得低位的值。(4)XOR 00101010B(5)AND 8000H,若结果为0,则是正数,否则为负数。第2章2-1 系统总线是CPU与存和I/O子系统之间进行数据交换的通道,包括数据总线、地址总线和控制总线,分别负责在CPU与存和I/O子系统之间传送数据、地址和控制信息。其中,数据总线决定了CPU每次存取数据的最大位数;地址总线决定了

4、系统的最大可编址空间;控制总线用来控制CPU与存和I/O设备之间的数据传送方式。2-2 8位通用寄存器8个:AH,AL,BH,BL,CH,CL,DH和DL。16位通用寄存器8个:AX,BX,CX,DX,SI,DI,BP和SP。32位通用寄存器8个:EAX,EBX,ECX,EDX,ESI,EDI,EBP和ESP。段寄存器6个:CS,DS,SS,ES,FS和GS。2-3 IP包含要执行的下一条指令的偏移地址;SP包含堆栈段栈顶的偏移地址;段寄存器用来存放16位段地址。通常,CS存放当前代码段的段地址,SS存放当前堆栈段的段地址,DS、ES、FS和GS用来存放数据段的段地址。2-4 因为段偏移地址是

5、16位,故每个段最大只能216B,即64KB。2-5 物理地址 = 段地址 16 + 偏移地址。给定逻辑地址,可得到唯一的物理地址;每个物理地址可由不同的逻辑地址描述。例如,逻辑地址0200:1200H对应唯一的物理地址03200H,但该物理地址又可由逻辑地址0320:0000H,0210:1100H和0000:3200H等来描述。2-6 实模式的主要特点如下。与8086兼容,只有低20条地址线有效,只能寻址第一个1MB的存空间。采用存分段方式,程序所使用的逻辑地址为16位段地址:16位偏移地址,每段64KB。20位物理地址由段地址左移4位加偏移地址得到。CPU总是从地址CS:IP处取指令,E

6、IP的高16位为0。SS:SP表示堆栈段的栈顶地址,ESP的高16位为0。对于32位80x86 CPU,程序可以使用32位寄存器和32位操作数,但采用32位寄存器表示偏移地址时,只使用低16位,高16位为0。2-7 首字单元地址:23A10H;末字单元地址:23A1EH2-8 这些数在存的存放情况如下:010006H310005H47H10004H2BH10003H2AH10002H010001H110000H2-9 (1)CF = 1 OF = 0 SF = 0 ZF = 1(2)CF = 0 OF = 1 SF = 1 ZF = 0(3)CF = 1 OF = 1 SF = 0 ZF =

7、1(4)CF = 0 OF = 0 SF = 1 ZF = 02-10 (1)CF = 0 OF = 0 SF = 0 ZF = 0(2)CF = 0 OF = 1 SF = 0 ZF = 0(3)CF = 1 OF = 0 SF = 1 ZF = 0(4)CF = 1 OF = 1 SF = 1 ZF = 0第3章3-1 (1)SS(2)CS(3)DS(4)FS(5)SS(6)DS(7)DS(8)ES3-2 (1)正确(2)类型不匹配(3)两个操作数不能同时是存操作数(4)没有espeax*3这种操作数形式(5)正确(6)CS不能作为目的操作数(7)类型不确定(8)没有sp这种操作数形式(9

8、)条件转移指令的操作数只能是标号(10)正确(11)不能将立即数送段寄存器(12)没有bx+2这种操作数形式3-3 (1)27feh (2)2a00h (3)2802h (4)2801h(5)27feh(段调用)或27fch(段间调用)(6)2802h(段返回)或2804h(段间返回)(7)27fch (8)2804h3-4 DEC不影响CF。3-5 不能。转移类指令(如JMP,Jcc,LOOP,CALL及RET等)的执行会改变IP的值。3-6 无符号数比较:(1)ZF = 1(2)ZF = 0 (3)CF = 1 (4)CF = 1 或 ZF = 1 (5)CF = 0 且 ZF = 0(6

9、)CF = 0带符号数比较:(1)ZF = 1 (2)ZF = 0 (3)SF OF (4)SF OF 或 ZF = 1 (5)SF = OF 且 ZF = 0 (6)SF= OF3-7 CALL指令执行的操作:(1)返回地址进栈。段间调用:CS与IP(下一条指令的地址)依次进栈。段调用:IP(下一条指令的16位偏移地址)进栈。(2)转移到过程的第1条指令去执行。段间调用:根据操作数,将32位分段地址送CS:IP。 段调用:根据操作数,将16位偏移地址送IP。 RET指令执行的操作:返回地址出栈,从而实现转移到返回地址处。段间返回:POP 1个双字到CS:IP。 段返回:POP 1个字到IP。

10、 3-8 AX的值将是返回地址的16位偏移地址。3-9 (1)除数为0。(2)除数太小,被除数太大,导致商溢出。3-10 (1)cbw (2)cwd (3)cdq (4)bt ax, 03-11(1)movah, 0 addax, bx(2)cbwaddax, bx(3)movsxeax, aladdeax, ebx3-12 将DX:AX中的双字数右移4位。3-13 指令ALCFOFSFZFxoral, al 0 0 0 0 1moval, 2550ffh 0 0 0 1incal 0 0 0 0 1notal0ffh 0 0 0 1shlal, 10feh 1 0 1 0cmpal, 100

11、feh 0 0 1 0subal, 7fh7fh 0 1 0 0shlal, 10feh 0 1 1 03-14(1)jcxzdonenext:movbl, simoves:di, blincsiincdiloopnextdone:(2)jcxzdonenext:moves:di, eaxsubdi, 4loopnextdone:(3)jcxzdonenext:movax, sicmpax, es:dipushfaddsi, 2adddi, 2popfloopenextdone:3-15 将AX与DX中的4位十进制数对应的压缩BCD码相加,结果存入AX。例如,若AX = 1234H,DX =

12、5678H,则结果AX = 6912H。3-16 (1)movbl, alandbl, 0fhmovbh, alshrbh, 4(2)shlax, 1rclbx, 1rclcx, 1(3)cmpal, 10jgesetcfcmpal, -10jlesetcfclcjmpexitsetcf:stcexit:(4)cmpeax, ebxjbenextxchgeax, ebxnext:cmpeax, ecxjbedonexchgeax, ecxdone:(5)movcx, axxorcx, bxtestcx, 1jzexittestbx, 1jzexitxchgax, bxexit:(6)movdx

13、, 0shlax, 1rcldx, 1movbx, axmovcx, dxshlax, 1rcldx, 1shlax, 1rcldx, 1addax, bxadcdx, cx(7)moval, xcbwshlax, 2subax, 5movbx, axmoval, xsaral, 1cbwaddax, bx(8)movax, 0movcx, 100next:addax, cxloopnext第4章4-1 指令是程序运行时由CPU执行的,在汇编后由对应的机器代码所取代;而伪指令是不可执行的,只是由汇编器处理的命令。指令与机器密切相关,指令系统是由CPU本身确定的;而伪指令与机器无关,只与汇编器有关。4-2 标号表示指令的起始地址,可作为转移类指令的操作数,表示转向地址;变量是用来定义数据的,可作为指令的存操作数。JMPL; 直接转移,转移到标号L所在地址JMPX; 段间接转移,目标的偏移地址为X的值(字)4-3(1)源程序的编辑。输出文件:源程序文件.asm。(2)源程序的汇编。输入文件:源程序文件。输出文件:无错:目标文件.obj,列表文件等。有错:错误信息,列表文件。(3)目标文件的连接。输入文件:目标文件与库文件。输出文件:无错:可执行文件.exe,映像文件等。有错:错误信息。(4)可执行文件的试运行。(5)可执

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号