(1)逻辑运算指令
AND可用于复位某些位(同0相与),不影响其他位。例如:and bl,11110110B
OR可用于置位某些位(同1相或),不影响其他位。例如:or bl, 00001001B
XOR指令可用于求反某些位(同1相异或),不影响其他位。例如:xor bl, 00001001B
(2)移位指令
对寄存器操作数或内存操作数进行指定位数的移位。可一次移一位,也可一次移位CL规定的次数。
非循环移位 SHL SHR SAL SAR
循环移位 ROL ROR RCL RCR
非循环移位 (B/W)
SHL reg/mem,1/CL
;逻辑左移,最高位进入CF,最低位补0
SHR reg/mem,1/CL
;逻辑右移,最低位进入CF,最高位补0
SAL reg/mem,1/CL
;算术左移,最高位进入CF,最低位补0
SAR reg/mem,1/CL
;算术右移,最低位进入CF,最高位不变
对标志的影响
按照移入的位设置进位标志CF
根据移位后的结果影响SF、ZF、PF
对AF没有定义
进行1次移位后,如果移位前的操作数最高位与移位后操作数的最高位不同,则OF=1;否则OF=0。
循环移位(B/W)
将操作数从一端移出的位返回到另一端形成循环,分成不带进位和带进位