logo资料库

80x86汇编语言程序设计习题参考答案.doc

第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
资料共42页,剩余部分请下载后查看
高等学校计算机专业教材 80x86 汇编语言程序设计习题参考答案 第 1 章 1.1 汇编的主要功能:对汇编语言源文件进行语法检查;若没有语法 错误,则将符号指令翻译为机器代码,生成目标文件。 连接的主要功能:实现一个或多个目标文件及库文件的连接;完成浮 动地址的重定位;若无连接错误,则生成一个可执行文件。 1.2 (1)2EH (2)0D2H (3)0FFH (4)80H (5)7FH (6)0FEH 1.3 (1)7FH (2)0FF80H (3)0FFFFH (4)0FFD2H (5)8000H (6) 0FFH 1.4 无符号数范围:0 ~ 2N -1; 带符号数范围:-2N-1 ~ 2N-1 -1。 1.5 (1)压缩 BCD 码:58H;非压缩 BCD 码:x5x8H。 (2)压缩 BCD 码:1624H;非压缩 BCD 码:x1x6x2x4H。 1.6 (1)字符'1'的 ASCII 码;十进制数 31 的压缩 BCD 码;十进制 数 1 的非压缩 BCD 码;十进制数 49 的十六进制表示。 (2)十进制数-1 的 8 位二进制补码表示;带符号数 255 的 16 位二 进制补码表示;无符号数 255 的 8 位二进制形式。 (3)十进制数?/FONT>1 的 16 位二进制补码表示;带符号数 65535 的 32 位二进制补码表示;无符号数 65535 的 16 位二进制形式。
1.7 (1)作为无符号数为 159,等值的 16 位和 32 位形式均为 9FH; 作 为 带 符 号 数 为 -97 , 等 值 的 16 位 和 32 位 形 式 分 别 为 0FF9FH 与 0FFFFFF9FH。 (2)作为无符号数和带符号数均为 104,等值的 16 位和 32 位形式 均为 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 每次存取 数据的最大位数;地址总线决定了系统的最大可寻址空间;控制总线用来 控制 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 因为段内偏移地址是 16 位,故每个段最大只能 216B,即 64KB。 2.5 物理地址 = 段地址 × 16 + 偏移地址。给定逻辑地址,可得到 惟一的物理地址;每个物理地址可由不同的逻辑地址描述。例如,逻辑地 址 0200:1200H 对应惟一的物理地址 03200H,但该物理地址又可由逻辑地 址 0320:0000H、0210:1100H 和 0000:3200H 等来描述。 2.6 实模式的主要特点如下: (1)与 8086 兼容,只有低 20 条地址线有效,只能寻址第 1 个 1MB 的内存空间; (2)采用内存分段方式,程序所使用的逻辑地址为 16 位段地址:16 位偏移地址,每段小于等于 64KB。20 位物理地址由段地址左移 4 位加偏移 地址得到; (3)CPU 总是从地址 CS:IP 处取指令,EIP 的高 16 位为 0; (4)SS:SP 表示堆栈段的栈顶地址,ESP 的高 16 位为 0; (5)对于 32 位 80x86 CPU,程序可以使用 32 位寄存器和 32 位操作 数,但采用 32 位寄存器表示偏移地址时,只使用低 16 位,高 16 位为 0。 2.7 首字单元地址:23A10H;末字单元地址:23A1EH。 2.8 这些数在内存的存放情况如下:
… 0 3 47H 2BH 2AH 0 1 … 10006H 10005H 10004H 10003H 10002H 10001H 10000H 2.9 (1)CF = 1 OF = 0 SF = 0 ZF = 1 (2)CF = 0 OF = 1 SF = 1 ZF = 0 = 1 ZF = 0 (3)CF = 1 OF = 1 SF = 0 ZF = 1 (4)CF = 0 OF = 0 SF 2.10 (1)CF = 0 OF = 0 SF = 0 ZF = 0 (2)CF = 0 OF = 1 SF = 0 ZF = 0 SF = 1 ZF = 0 (3)CF = 1 OF = 0 SF = 1 ZF = 0 (4)CF = 1 OF = 1 第 3 章
3.1 (1)SS (2)CS (3)DS (4)FS (5)SS (6)DS (7)DS (8) ES 3.2 (1)正 确 不匹配 (2)类型 (3)两个操作数不能同时是内存操作数 (4)没有 [esp][eax*3]这种操作数形式 (5)正 确 能作为目的操作数 (7)类型不确 定 数形式 (6)CS 不 (8)没有[sp]这种操作 (9)条件转移指令的操作数只能是标号 (10)正确 (11)不能将立即数送段寄存器 (12)没 有 bx+2 这种操作数形式 3.3 (1)27feh (2)2a00h (3)2802h (4)2801h (5)27feh(段内调用)或 27fch(段间调用) (6)2802h(段内返回)或 2804h(段间返回) (7)27fch (8) 2804h 3.4 3.5 DEC 指令不影响 CF,SUB 指令影响 CF。 不能。转移类指令(如 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)CF = 0 带符号数比较: (1)ZF = 1 (2)ZF = 0 (3)SF <> OF (4)SF <> OF 或 ZF = 1 (5)SF = OF 且 ZF = 0 (6)SF= OF
3.7 CALL 指令执行的操作: (1)返回地址进栈。 段间调用:CS 与 IP(下一条指令的地址)依次进栈。 段内调用:IP(下一条指令的 16 位偏移地址)进栈。 (2)转移到过程的第一条指令去执行。 段间调用:根据操作数,将 32 位分段地址送 CS:IP。 段内调用:根据操作数,将 16 位偏移地址送 IP。 RET 指令执行的操作:将返回地址出栈,从而实现转移到返回地址处。 段间返回:出栈一个双字到 CS:IP。 段内返回:出栈一个字到 IP。 3.8 AX 的值将是返回地址的 16 位偏移地址。 3.9 (1)除数为 0。 (2)除数太小,被除数太大,导致商溢出。 3.10 (1)cbw (2)cwd (3)cdq (4)bt ax, 0 3.11 (1) mov ah, 0 add ax, bx (2) cbw add ax, bx (3) movsx eax, al add eax, ebx 3.12 将 DX:AX 中的双字数右移 4 位。 3.13 指令 AL CF OF SF ZF xor mov al, al 0 0 0 0 1 al, 255 0ffh 0 0 0 1
al al 0 0ffh 0 al, 1 0feh 1 al, 10 0feh al, 7fh 7fh 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 al, 1 0feh 0 1 1 0 inc not shl cmp sub shl 3.14 (1) jcxz done next: mov bl, [si] mov inc inc es:[di], bl si di loop next done: (2) jcxz done next: mov es:[di], eax sub loop di, 4 next done: (3) jcxz done next: mov ax, [si] cmp ax, es:[di] pushf
add add popf loope si, 2 di, 2 next done: 3.15 将 AX 与 DX 中的 4 位十进制数对应的压缩 BCD 码相加,结果 存入 AX。 3.16 例如,若 AX = 1234H,DX = 5678H,则结果 AX = 6912H。 (1) mov bl, al and mov shr bl, 0fh bh, al bh, 4 (2) shl ax, 1 rcl rcl bx, 1 cx, 1 (3) cmp al, 10 jge cmp jle clc jmp setcf al, -10 setcf exit setcf: stc exit:
分享到:
收藏