逻辑运算类指令:
(1) 格式:NOT OPRD 功能:OPRD按位取反 对标志位没有影响
设:AX=73H DX= 85H
(2) AND、OR、XOR
格式:AND(OR/XOR) OPRD1, OPRD2 功能:OPRD1 AND(OR/XOR) OPRD2 OPRD1
这三条指令执行后,CF=0, OF=0, SF, PF, ZF发生变化。(例子:MOV AX, 2050H
AND AX, 0FFH;取AX的低8位 AX=0050H PF=1, SF=0, ZF=0)
XOR: OPRD1, OPRD2 ;异或相异为1,相同为0. XOR AX,AX ;自己跟自己异或清零
“对某些位置1用OR;对某些位清零用AND;对某些位取反用XOR”
(3) TEST
格式:TEST OPRD1, OPRD2
功能:(OPRD1) AND (OPRD2)
结果影响标志
移位指令:(非循环移位,循环移位)
非循环移位:
左移:
左移一位进CF,右边补0,相当于乘2。影响标志位
若移位后最高位与CF不同,则OF=1,表示移位前后数据变号.
若移位位数大于1,所移的位数用CL存放。
右移:
若移位位数大于1,所移的位数用CL存放
MOV AL, -4 ; AL: 1111 1100
SAR AL, 1 ; AL: 1111 1110 -2
逻辑右移:
不带进位循环左移
不带进位循环右移
带进位循环左移
带进位循环右移