NOT 逻辑非指令NOT 对一个操作数执行逻辑非运算 Not reg/mem eg/mem ●按位取反,原来“0的位变 为“1”;原来是“1”的位变为“0° ■NOT指令是一个单操作数指令 NOT指令不影响标志位
逻辑非指令NOT ◼ 对一个操作数执行逻辑非运算 ◼ NOT指令是一个单操作数指令 ◼ NOT指令不影响标志位 NOT reg/mem ;reg/mem←~reg/mem 按位取反,原来是“0”的位变 为“1”;原来是“1”的位变为“0” NOT
例1:逻辑运算 mov al,45h;逻辑与al=01h and al. 3lh ;CF=OF=0,SF=0、ZF=0、PF=0 mov al, 45h 逻辑或a1=75h or al. 31h ;CF=OF=0,SF=0、ZF=0、PF=0 mov al, 45h ;逻辑异或al=74h Xor al, 31h ;CF=OF=0,SF=0、ZF=0、PF=1 mov al,45h;逻辑非al=0bah not al 标志不变
例1:逻辑运算 mov al,45h ;逻辑与 al=01h and al,31h ;CF=OF=0,SF=0、ZF=0、PF=0 mov al,45h ;逻辑或 al=75h or al,31h ;CF=OF=0,SF=0、ZF=0、PF=0 mov al,45h ;逻辑异或 al=74h xor al,31h ;CF=OF=0,SF=0、ZF=0、PF=1 mov al,45h ;逻辑非 al=0bah not al ;标志不变
例2:逻辑指令应用 ;AND指令可用于复位某些位(同0相与),不影响其他 位:将B中D3和D0位清0,其他位不变 and b1.11110110B ;OR指令可用于置位某些位(同1相或),不影响其他 位:将B中D3和D0位置1,其他位不变 orbl,00001001B ;XOR指令可用于求反某些位(同1相异或),不影响其 他位:将BL中D3和D0位求反,其他不变 xor bl,00001001B
例2:逻辑指令应用 ;AND指令可用于复位某些位(同0相与),不影响其他 位:将BL中D3和D0位清0,其他位不变 and bl,11110110B ;OR指令可用于置位某些位(同1相或),不影响其他 位:将BL中D3和D0位置1,其他位不变 or bl, 00001001B ;XOR指令可用于求反某些位(同1相异或),不影响其 他位:将BL中D3和D0位求反,其他不变 xor bl, 00001001B
EST 试指令TEST 对两个操作数执行逻辑与运算,结果不回送到 目的操作数 TEST reg,im/reg/mem∧ TEST mem, imm/reg mem/ eeg 号只有相“与”的两位都是1,结 果才是1;否则,“与”的结果为 0 AND指令设置CF=OF=0,根据结果设置SF ZF和P状态,而对AF未定义
测试指令TEST ◼ 对两个操作数执行逻辑与运算,结果不回送到 目的操作数 ◼ AND指令设置CF = OF = 0,根据结果设置SF、 ZF和PF状态,而对AF未定义 TEST reg,imm/reg/mem ;reg∧imm/reg/mem TEST mem,imm/reg ;mem∧imm/reg 只有相“与”的两位都是1,结 果才是1;否则, “与”的结果为 0 TEST
EST 例3:测试为0或1 TEsT AX, 0001H JZ Even 1 ;ZF=1,相等跳转到 Even 1 Even 1 TEST指令通常用于检测一些条件是否 满足,但又不希望改变原操作数的情况
例3:测试为0或1 TEST AX,0001H JZ EVEN_1 ;ZF=1,相等跳转到 EVEN_1 …… EVEN_1: TEST指令通常用于检测一些条件是否 满足,但又不希望改变原操作数的情况 TEST