8086汇编:分支指令
与分支有关的指令
无条件转移指令
JMP OPR |
条件转移指令
根据条件标志转移
格式:转移指令操作码 OPR
- JZ(或JE) 结果为0(或相等)则转移 测试条件:ZF=1
- JNZ(或JNE) 结果不为0(或不相等)则转移 测试条件:ZF=0
- JC 结果有进位则转移 测试条件:CF=1
- JNC 结果无进位则转移 测试条件:CF=0
- JS 结果为负则转移 测试条件:SF=1
- JNS 结果为正则转移 测试条件:SF=0
- JO 结果溢出则转移 测试条件:OF=1
- JNO 结果不溢出则转移 测试条件:OF=0
- JP 结果为偶数个1则转移 测试条件:PF=1
- JNP 结果为奇数个1则转移 测试条件:PF=0
无符号数比较转移
无符号数比较转移指令包括4种指令:
- JB 低于则转移 (A<B)测试条件:CF =1且ZF=0
- JBE 低于等于则转移 (A≤B) 测试条件:CF=1或ZF=1
- JA 高于则转移 (A>B)测试条件:CF=0且ZF=0
- JAE 高于等于则转移 (A≥B) 测试条件:CF=0或ZF=1
带符号数比较转移
带符号数的最高位为符号位,因此带符号数的数值与无符号数不一样
- JL 小于则转移 (A<B)测试条件:SF≠OF且ZF=0
- JLE 小于等于则转移 (A≤B)测试条件: SF≠OF或ZF=1
- JG 大于则转移 (A>B)测试条件:SF=OF且ZF=0
- JGE 大于等于则转移 (A≥B)测试条件:SF=OF或ZF=1
CX值为0则转移
格式: JCXZ OPR
测试条件:(CX)=0
功能:测试CX的值为0则转移。
测试指令TEST
格式: TEST OPR1,OPR2
功能:两个操作数相与,结果不回送,改变标志位。
MOV AL,35H ;00110101 |
数字和字母的判断
数字的ASCII码:30H~39H 00110000B~00111001B
大写字母的ASCII码:41H~5AH 01000001B~01011010B
小写字母的ASCII码:61H~7AH 01100001B~01111010B
移位运算
算术移位操作(带符号)
(1)SAL算术左移指令
格式: SAL OPR, CNT
功能:操作数左移,最高位移入CF,最低位补0。CNT>1,则用CL寄存器存放次数。
(2) SAR算术右移指令
格式: SAR OPR, CNT
功能:操作数右移,最低位移入CF,最高有效位右移的同时最高有效位保持不变。即如果原来是0则仍为0,原来是1,则仍为1。若CNT>1,则用CL寄存器存放次数 。
逻辑移位操作(无符号)
(1)SHL逻辑左移指令
格式: SHL OPR,CNT
功能:与算术左移一样。操作数左移,最高位移入CF,最低位补0。
(2)SHR逻辑右移指令
格式: SHR OPR,CNT
循环移位操作
(1)ROL循环左移指令
格式: ROL OPR,CNT
功能:操作数循环左移,最高位移入CF同时移入最低位。
(2)ROR循环右移指令
格式:ROR OPR,CNT
功能:操作数循环右移,最低位移入CF同时移入最高位。
(3)RCL带进位的循环左移指令
格式: RCL OPR,CNT
功能:操作数和进位一起循环左移,CF移入最低位同时最高位移入CF。
(4)RCR带进位的循环右移指令
格式: RCR OPR,CNT
功能:操作数和进位一起循环右移,CF移入最高位同时最低位移入CF。