8086指令系统---控制转移指令(一)
表3.4 条件转移指令
分类 | 指 令 | 转 移 条 件 | 说 明 |
(Ⅰ) | JZ/JE | ZF=1 | 为零/相等, 则转移 |
JNZ/JNE | ZF=0 | 不为零/不相等, 则转移 | |
JS | SF=1 | 为负, 则转移 | |
JNS | SF=0 | 为正, 则转移 | |
JO | OF=1 | 溢出, 则转移 | |
JNO | OF=0 | 不溢出, 则转移 | |
JP | PF=1 | 奇偶位为1, 则转移 | |
JNP | PF=0 | 奇偶位为0, 则转移 | |
JC | CF=1 | 进位位为1, 则转移 | |
JNC | CF=0 | 进位位为0, 则转移 | |
(Ⅱ) | JB/JNAE/JC | CF=1 | 低于/不高于等于, 则转移 |
JNB/JAE/JNC | CF=0 | 不低于/高于等于, 则转移 | |
JBE/JNA | (CFZF)=1 | 低于等于/不高于, 则转移 | |
JNBE/JA | (CFZF)=0 | 不低于等于/高于, 则转移 | |
(Ⅲ) | JL/JNGE | (SFOF)=1 | 小于/不大于等于, 则转移 |
JNL/JGE | (SFOF)=0 | 不小于/大于等于, 则转移 | |
JLE/JNG | ((SFOF)ZF)=1 | 小于等于/不大于, 则转移 | |
JNLE/JG | ((SFOF)ZF)=0 | 不小于等于/大于, 则转移 | |
(Ⅳ) | JCXZ | (CX)=0 | CX的内容为0, 则转移 |
注:(Ⅰ)根据条件码的值转移 (Ⅱ)比较两个无符号数,根据比较的结果转移
(Ⅲ)比较两个带符号数,根据比较的结果转移 (Ⅳ)根据CX寄存器的值转移
1050:0003 8ED8 MOV DS,AX
1050:0005 B90500 MOV CX,0005
1050:0008 BB0000 MOV BX,0000
1050:000D 0207 AGAIN: ADD AL,[BX]
1050:000F 43 INC BX
1050:0010 49 DEC CX
1050:0011 75FA JNZ 000D
1050:0013 A20500 MOV [0005],AL
1050:0016 B44C MOV AH,4C
1050:0018 CD21 INT 21
例假设程序进行两个带符号数的比较,并根据比较结果转移,其中(AL)=80H,(BL)=01,请指出下面 两组指令的转向地址。
⑴ CMP AL,BL ⑵ CMP AL,BL
JL XY JB XY
答:⑴ 转向目标地址XY;⑵不能实现转移。
执行CMP指令时,(AL)-(BL)=80-01=7F,条件码设置为:SF=0,OF=1,CF=0。执行JL指令时,测试转移条件:SFOF = 01 =1,说明满足(AL)<(BL)的转移条件,因此,(IP)←XY的偏移地址,程序即转移到XY单元执行新的指令。
JB指令的转移条件为CF=1,而CMP的执行结果使CF=0,所以不能引起转移。
8086指令系统控制转移指 相关文章:
- 8086指令系统---控制转移指令(二)(11-27)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)