0821H 0 0 0 0 1
(3)SUB AX,VALUE ; F142H 1 0 0 1 1
(4)CMP AX,VALUE ; 0A69H 1 0 0 1 1
(5)NOT AX ; F596H X X X X X
(6)TEST AX,VALUE ; 0A69H 0 0 0 0 1
3.24 设 AX和
BX中是符号数, CX和
DX是无符号数,请分别为下列各项确定 CMP
和条件转移指令。 CX值超过 DX转移。 AX未超过 BX转移。 DX为 0转移。
CX值等于小于 DX转移。 答案:
(1)
CMP CX,DX JA NEXT (2)
CMP AX,BX JLE NEXT (3)
CMP DX,0 JZ NEXT 4
微机原理及应用(陈继红、徐晨)课后习题答案
(4)
CMP CX,DX JBE NEXT
3.25 阅读分析下列指令序列: ADD AX,BX JNO L1 JNC L2
SUB AX,BX JNC L3 JNO L4 JMP L5
若 AX和
BX的初值分别为以下
5种情况,则执行该指令序列后,程序将分别转向何处 (L1~L5中的一个)。
AX=13C6H, BX=80DCH
AX=0B568H,BX=54B7H
AX=42C8H, BX=608DH
AX=0D023H,BX=9FD0H
AX=9FD0H, BX=0D023H
答案:(1)转
L1:不溢出,转移到 L1处;
(2)转
L1:不溢出,转移到 L1处;
(3)转
L2:溢出,不转移到 L1处,进位 CF=0,转移到 L2处; (4)转
L3:溢出,不转移到 L1处,进位 CF=1,不转移到 L2处,减法借位 CF=0,转移 到
L3处; (5)转
L5:溢出,不转移到 L1处,进位 CF=1,不转移到 L2处,减法借位 CF=1,不转 移到
L3处,不溢出 OF=0,转移到 L4处;
3.26 用普通运算指令执行 BCD码运算时
,为什么要进行十进制调整 ?具体地讲,在进行
BCD码的加、减、乘、除运算时
,程序段的什么位置必须加上十进制调整指令 ?
解:因为
8086指令把操作数作为二进制数进行二进制运算 ,要得到正确的 BCD结果,需
要进行调整。在加、减、乘法指令之后加上 BCD调整指令
,而在除法指令之前先用 BCD调
整指令再用除法指令。
3.27在编写乘除法程序时,为什么常用移位指令来代替乘除法指令?编写一段程序,实 现将
BX中的数除以
10,结果仍然放在 BX中。
解:用移位指令时,左移 l位相当于将操作数乘 2,右移
1位相当于将操作数除 2。用
移位指令实现一些简单的乘除法程序,比用乘法指令和除法指令进行乘、除运算要快得多。 用除法指令实现:
MOV CL 0AH
MOV AX,BX
IDIV CL
MOV BX,AX
3.28 串操作指令使用时特别要注意和 SI,DI这两个寄存器及方向标志 DF密切相关。请 具体就指令
MOVSB/MOVSW、CMPSB/CMPSW、SCASB/SCASW、LODSB/LODSW、 STOSB/STOSW列表说明和 SI、DI及 DF的关系。 解答:
SI DI DF
MOVSB/MOVSW指出源地 址
指出目的地 址 不带
REP重复前缀时, DF=0,每传送一次, SI、 DI加 1或加
2,DF=1,SI、DI则减 1或减 2
CMPSB/CMPSW 存放源字 符串首地 址
存放目的字 符串首地址
DF=0,每次比较后, SI、DI加 1或加 2,CX减
1,DF=1,SI、DI减 1或减 2,CX减 1
SCASB/SCASW 无指出字符串 首址偏移量 无
LODSB/LODSW作为地址 指针
存放处理结 果
DF=1时,地址作增量修改, DF=0时,地址作减 量修改 5