微机原理第3(答案)
题
章习精品资料
微机原理第3章习题(答案)
1. 下列各条指令是否有错?如果有,请指出错误之处并改正 (1)MOV DS,1000H (2)MOV [100],23H (3)ADD AX,[BX+BP+6] (4)PUSH DL (5)IN AX,[3FH] (6)OUT 3FFH,AL (7)LES SS,[SI] (8)POP [AX] (9)IMUL 4CH (10)SHL BX,5 (11)INT 300
(12)XCHG DX,0FFFH
答:(1)错误。不允许直接向段寄存器送立即数,可改为:MOV AX, 1000H MOVDS, AX
(2)错误。该指令在语法上是对的,即可以把一个立即数送入一个存储单元;但是如果考虑实际编译,则第一操作数前应加上 BYTE PTR 或 WORD PTR 说明,否则汇编程序会因不能确定操作数长度而指示出错。可改为:MOV BYTE PTR [100],23H
(3)错误。不能同时使用两个基址寄存器 BX、BP 进行间接寻址,可改为:ADD AX, [BX+ DI+ 6]
(4)错误。堆栈操作应以字为单位进行,而 DL 是一个字节。可改为:PUSH DX
仅供学习与交流,如有侵权请联系网站删除 谢谢2
精品资料
(5)错误。在输入/输出指令中,8 位端口地址应直接写在操作数处。可改为:IN AX,3FH
(6)错误。端口地址3FFH 已超出 8 位二进制表示范围,16 位端口地址应用DX。可改为:
MOV DX, 3FFH OUT DX, AL
(7)错误。LES 指令的目操作数应该是通用寄存器,不能是段寄存器。可改为:LES BX,[SI]
(8)错误。AX 不能用于间接寻址,间接寻址只能用 BX、BP、SI、DI 四个寄存器之一。可改为:
POP [BX]
(9)错误。立即数不能做乘法指令的操作数,可改为:MOV BL,4CH IMUL BL (10)错误。当逻辑移位的次数大于1时,应该用CL指示次数。可改为MOV CL,5 SHL BX,CL
(11)错误。操作数 300 > 255,已超出有效的中断类型码范围。
(12)错误。XCHG 指令不允许立即数做它的操作数。可改为:MOV CX,0FFFH XCHG DX,CX
2. 请指出以下各指令的源、目的操作数所使用的寻址方式。 (1) MOV SI,2100H (2) SBB DISP[BX],7 (3) AND [DI],AX (4) OR AX,[609EH]
(5) MOV [BX+DI+30H],CX (6) PUSH ES:[BP]
仅供学习与交流,如有侵权请联系网站删除 谢谢3
精品资料
(7) CALL [DI]DISP (8) JNZ Short_ label
答:(1)源操作数:立即数寻址;目的操作数:寄存器寻址 (2)源操作数:立即数寻址;目的操作数:基址寻址 (3)源操作数:寄存器寻址;目的操作数:寄存器间接寻址 (4)源操作数:直接寻址; 目的操作数:寄存器寻址
(5)源操作数:寄存器寻址;目的操作数:(带位移量的)基址变址寻址 (6)源操作数:带段超越的寄存器间接寻址;目的操作数:隐含寻址 (7)只有一个操作数,为变址寻址 (8)只有一个操作数,为相对寻址
3. 已知DS=2000H ,有关的内存单元值为:(21000H)=00H , (21001H)=12H ,(21200H)=00H , (21201H)=10H , (23200H)=20H , (23201H)=30H , (23400H)=40H ,(23401H)=30H,(23600H)=60H,(23601H)=30H,符号 COUNT 的偏移地址为 1200H。执行下列指令后,寄存器 AX、BX、SI 的值分别是多少? MOV BX,OFFSET COUNT MOV SI,[BX]
MOV AX,COUNT[SI][BX]
答:执行结果为 BX=1200H,SI=1000H,AX=3040H。
4. 设标志寄存器值原为 0401H,AX=3272H,BX=42A2H。执行指令 SBB AL,BH 之后,AX 和标志寄存器的值分别是多少?
仅供学习与交流,如有侵权请联系网站删除 谢谢4
精品资料
答:由标志寄存器的原值 0401H 可知, F 的原值为 1,C故指令执行之后 AX=322FH,标志寄存器的值为 0410H,即 AF 变为 1,CF 变为 0,其余不变。
5.设若标志寄存器原值为 0A11H,SP=0060H,AL=4。下列几条指令执行后,标志寄存器、AX、SP 的值分别是多少? PUSHF LAHF
XCHG AH,AL PUSH AX SAHF POPF
答:指令执行后标志寄存器的值为 0411H,AX=0411H ,SP=005EH。
6. 若 AX=26D3H,CX=7908H,CF=1,执行下列指令后,寄存器 AX、CX 的值分别是多少?CF=?OF=? SAL CH,1 RCR AX,CL ROL AL,1
答:执行结果为 AX=0A64CH,CX=0F208H,CF=OF=0。
7. 已知 IP=1000H,CF=0,则执行指令 JNC Short label 后,下列各数中哪一个是可能的 IP 值?
(A)0FFFFH(B)0FFEH(C)10FEH(D)1100H 答:(B)
仅供学习与交流,如有侵权请联系网站删除 谢谢5