与分支有关的指令

无条件转移指令

JMP OPR
JMP SHORT OPR
JMP NEAR PTR OPR
JMP WORD PTR OPR
JMP FAR PTR OPR
JMP DWORD PTR 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
TEST AL,08H ;00001000
JZ LET1
NOT AL
JMP OUT1
LET1:
ADD AL,3
OUT1:
MOV Y,AL

数字和字母的判断

数字的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。