逻辑非指令NOT NOT >对一个操作数执行逻辑非运算 NOT reg/mem reg/meme reg/mem 按位取反,原来是“0”的位变 为“1”;原来是“1”的位变为“0 >NOT指令是一个单操作数指令 >NOT指令不影响标志位
西 华 师 范 大 学 计 算 机 学 院 逻辑非指令NOT ➢对一个操作数执行逻辑非运算 ➢NOT指令是一个单操作数指令 ➢NOT指令不影响标志位 NOT reg/mem ;reg/mem←~reg/mem 按位取反,原来是“0”的位变 为“1”;原来是“1”的位变为“0” NOT
例:逻辑运算 mova1,45h;逻辑与a1=01h and al,3lh;CF=OF=0,SF=0、ZF=0、PF=0 mov al,45h;逻辑或a1=75h or al. 31h CF=0F=0,SF=0、ZF=0、PF=0 mova1,45h;逻辑异或a1=74h xor al,31h;CF=OF=0,SF=0、ZF=0、PF=1 mova1,45h;逻辑非a1=0bah not al ;标志不变
例:逻辑运算 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 ;标志不变 西 华 师 范 大 学 计 算 机 学 院
「例:逻辑指令应用 AND指令可用于复位某些位(同0相与),不 影响其他位:将B中D3和D0位清0,其他位不变 andb1,11110110B 0R指令可用于置位某些位(同相或),不 影响其他位:将BL中D和D位置1,其他位不变 orb1,00001001B X0R指令可用于求反某些位(同相异或), 不影响其他位:将B中D和D位求反,其他不变 xorb1,00001001B
例:逻辑指令应用 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 西 华 师 范 大 学 计 算 机 学 院
测试指令TEST EST 对两个操作数执行逻辑与运算,结果 不回送到目的操作数 TEST reg, imm/reg/mem reg/Imm/reg/ mem ETEST mem, imm/reg; mem/imm/reg ⑤只有相“与”的两位都是1,结 果才是1;否则,“与”的结果为 0 >AND指令设置CFOF≡0,根据结果 设置SF、zF和PF状态,而对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 例:测试为0或1 test a1,0lh;测试AL的最低位Do jnz there;标志ZF=0,即D0=1 ;则程序转移到 there ;否则ZF=1,即D0=0,顺序执行 there TEST指令通常用于检测一些条件是否 满足,但又不希望改变原操作数的情况
例:测试为0或1 test al,01h ;测试AL的最低位D0 jnz there ;标志ZF=0,即D0=1 ;则程序转移到there ... ;否则ZF=1,即D0=0,顺序执行 there: ... TEST指令通常用于检测一些条件是否 满足,但又不希望改变原操作数的情况 TEST 西 华 师 范 大 学 计 算 机 学 院