内容发布更新时间 : 2024/11/8 11:53:05星期一 下面是文章的全部内容请认真阅读。
最新精品文档,知识共享!
解:(1)ADD AL, BL
DAA
ADC AL, BH DAA
XCHG AL, AH SUB DAS
MOV DL, AL MOV AL, DH SBB DAS
MOV DH, AL
2.16 简述指令的“DAA”和“DAS”对BCD码运算后进行调整的规则。 解:DAA的调整规则:
if (AL低4位>9 或 AF=1)then AL=AL+06H ; AF=1 ; endif
if (AL高4位>9 或 CF=1)then AL=AL+60H ; CF=1 ; endif
DAS的调整规则:
if (AL低4位>9 或 AF=1)then AL=AL-06H ; AF=1 ; endif
if (AL高4位>9 或 CF=1)then AL=AL-60H ; CF=1 ; Endif
AL, CH AL, CL
XCHG AL, AH
(2)MOV AL,DL
最新精品文档,知识共享!
2.17 用程序段实现对存入在BX,AX的双字进行左移5位。 解:
2.18 试分析下列程序完成什么功能?
MOV SHL MOV SHL SHR OR
CL,4 DX,CL BL,AH AX,CL BL,CL DL,BL
SHL RCL SHL RCL SHL RCL SHL RCL SHL RCL
AX,1 BX,1 AX,1 BX,1 AX,1 BX,1 AX,1 BX,1 AX,1 BX,1
解:把32位二进制代码(DX, AX)联合左移4位。
2.19 已知程序段如下:
MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX
试问:(1)每条指令执行后,AX寄存器的内容是什么? (2)每条指令执行后,CF,SF及ZF的值分别是什么? (3)程序运行结束时,AX及DX寄存器的值为多少? 解:
MOV MOV ROL DEC
AX,1234H CL,4 AX,CL AX
;AX内容为1234H,CF、SF、ZF的值保留初值 ;AX内容为1234H,CF、SF、ZF同上 ;AX内容为2341H,CF=1、SF=0、ZF=0 ;AX内容为2340H,CF=1、SF=0、ZF=0
最新精品文档,知识共享!
MOV MUL
CX,4 CX
;AX内容为2340H,CF=1、SF=0、ZF=0 ;AX内容为8D00H,CF=0、SF=0、ZF=0
2.20 程序中的“转移”是个什么概念?CPU执行转移指令是如何实现转移的? 解:程序中的“转移”是指改变程序的顺序执行过程,某条指令执行完后,不是紧接着执行该指令后面的指令,而是执行其它的指令。CPU是通过改变CS和IP指令指针的值来实现转移的。
2.21 设(DS)=2000H,(BX)=0030H,(SI)=0202H,(20232H)=00H,(200233H)=06H,
分别执行下述两条指令后,实际转移的目标地址物理地址多少? (1)JMP (2)JMP
BX
Word PTR[BX+SI]
解:(1)目的地址为0030H
(2)转移的目标地址为:由[BX+SI]寻址得存储单元的地址为20232H,目的地址为0600H。
2.22 编写指令序列,实现下述要求
(1) 使AX寄存器的低 4 位清零,其余位不变。 (2) 使BX寄存器的低4 位置1,其余位不变。
(3) 测试 BX中的位0 和位4,当这两位同时为零时,将AL置1,否则AL置0。 解:(1)AND AX, 0FFF0H
(2)OR
JZ
AX, 000FH NEXT
;ZF=1,表明这两位同时为0,转走将AL置1 ;ZF=0,表明这两位不同时为0,将AL清0
(3)TEST AX, 0011H
MOV AL,0 JMP EXIT
NEXT: MOV AL,1 EXIT:
2.23 下面程序段在什么情况下执行结果是(AH)=0?
BEGIN: IN AL, 60H
TEST AL, 80H JZ BRCH1 XOR AX, AX JMP STOP
最新精品文档,知识共享!
BRCH1: MOV AH, 0FFH STOP: ……
解:从60H端口读到是数据最高位为1时,使(AH)为0;数据最高位为0时,使(AH)为0FFH。
2.24 “CALL”指令与“JMP”指令相同之处是什么?不同之处是什么?
解:相同之处:“CALL”指令和“JMP”指令都能实现程序的控制转移,改变程序顺序指令的过程。
不同之处:“CALL”指令执行时,使程序转移到子程序中执行,执行完子程序后,还是会回到调用程序,继续执行紧跟在“CALL”指令之后的那条指令。但“JMP”指令执行完后一般不会去执行紧跟在“JMP”指令之后的那条指令。
2.25 叙述8086/8088CPU执行指令“CALL DWORD PTR[100H]”的步骤。
2.26 设下列程序执行前,栈顶指针SS:SP为1000H:0220H,试求:
POP CX POP BX POP AX RET 4
(1) 画出该程序执行后的堆栈存储情况示意图。 解:使堆栈指针加10,上面的5个字的内容出栈,图略。 (2) 给出当前栈顶SS和SP的值。
(SS)=1000H, (SP)=022AH
2.27 一双字长的带符号数放在X和X+2中(X为变量),试编写一程序对这个数求其绝
对值。 解:
TEST [X+2], 8000H ;测试最高位,判断正负,负数好取绝对值 JZ MOV MOV NOT NOT ADD ADC
DONE AX, X DX, [X+2] AX DX AX, 1 DX, 0