一、逻辑指令
1、AND 与指令
格式:AND DST,SRC
操作:(DST)<-(DST)^(SRC)
2、OR 或指令
格式:OR DST,SRC
操作:(DST)<-(DST)V(SRC)
3、NOT 非指令【不影响任何标志位】
格式:NOT OPR
操作:(OPR)<-(OPR)
4、XOR 异或指令【相同为0,不同为0】
5、TEST 测试指令【TEST指令的两个操作数相与的结果不保存,只根据结果置标志位】
格式:TEST OPR1,OPR2
操作:(OPR1)^(OPR2)
二、移位指令【CF进位】
1、SHL 逻辑左移
2、SAL 算术左移
当执行逻辑或算术左移时,操作结果相同,均是最低为补0,移出的最高位送CF标志位。
3、SHR 逻辑右移
当执行逻辑右移时,最高位补0,移出的最低位送CF标志位。
4、SAR 算术右移
当执行算术右移时,OPR被认为是有符号数,则最高位补符号位自身,移出的最低位送CF标志位
5、ROL 循环左移
当执行循环左移时,OPR整体向左移一位,最高位移出,同时送入CF标志位和最低位。
6、ROR 循环右移
当执行循环右移时,OPR整体向右移一位,最低位移出,同时送入CF标志位和最高位。
7、RCL 带进位循环左移
当执行带进位循环左移时,OPR整体向左移一位,此时最高位移出送CF标志位,而CF标志位原始的数值送OPR最低位。
8、RCR 带进位循环右移
当执行带进位循环右移时,OPR整体向右移一位,此时最低位移出送CF标志位,而CF标志位原始的数值送OPR最高位。
以上格式相同:(1)SHL OPR,1 (2)SHL OPR,CL,其中寄存器的值大于1
如需移位的次数大于1,则可以在该移位指令前把移位次数先送入CL寄存器中
例:对AX中的内容实现半字交换,即交换AH和AL中的内容
MOV CL,8
ROL AX,CL
如指令执行前,AX=1234H,指令执行后,AX=3412H。