教学提示 在正确理解每条指令的功能 基础上,可以阅读和编写有 实际意义的程序段 多多程序段
教学提示 在正确理解每条指令的功能 基础上,可以阅读和编写有 实际意义的程序段
位操作类指令 >位操作类指令以二进制位为基本单位 进行数据的操作;这是一类常用的指 令,都应该特别掌握 >注意这些指令对标志位的影响 1、逻辑运算指令 AND、OR、XOR、NOT、TEST 2、移位指令 SHL、SHR、SAR 3、循环移位指令 ROL、ROR、RCL、RcR
西 华 师 范 大 学 计 算 机 学 院 位操作类指令 ➢位操作类指令以二进制位为基本单位 进行数据的操作;这是一类常用的指 令,都应该特别掌握 ➢注意这些指令对标志位的影响 1、逻辑运算指令 AND 、OR、 XOR、NOT、TEST 2、移位指令 SHL、SHR、SAR 3、循环移位指令 ROL、ROR、RCL、RCR
逻辑与指令AND AND 对两个操作数执行逻辑与运算,结果 送到目的操作数 AND reg, imm/reg/mem; regfregAimm/reg/mem AND mem, imm/reg; mem+-mepXimm/reg 只有相"与”的两位都是1,结果才是1; 否则,结果为0,即有“0为0,全“1”为1 >AND指令设置CFOF≡0,根据结果 设置SF、zF和PF状态,而对AF未定义
西 华 师 范 大 学 计 算 机 学 院 逻辑与指令AND ➢对两个操作数执行逻辑与运算,结果 送到目的操作数 ➢AND指令设置CF = OF = 0,根据结果 设置SF、ZF和PF状态,而对AF未定义 AND reg,imm/reg/mem ;reg←reg∧imm/reg/mem AND mem,imm/reg ;mem←mem∧imm/reg 只有相“与”的两位都是1,结果才是1; 否则,结果为0,即有“0”为0,全“1”为1。 AND
逻辑或指令OR OR >对两个操作数执行逻辑或运算,结果 送到目的操作数 S OR reg, imm/reg/mem: regtfeg Imm/reg/mem OR mem, imm/reg; mem+-mem imm/reg v只要相“或”的两位有一位是1,结果就是 1否则,结果为0,即有“1为1,全“0为0 OR指令设置CF≡OF=0,根据结果设 置SF、ZF和PF状态,而对AF未定义
西 华 师 范 大 学 计 算 机 学 院 逻辑或指令OR ➢对两个操作数执行逻辑或运算,结果 送到目的操作数 ➢OR指令设置CF = OF = 0,根据结果设 置SF、ZF和PF状态,而对AF未定义 OR reg,imm/reg/mem ;reg←reg∨imm/reg/mem OR mem,imm/reg ;mem←mem∨imm/reg 只要相“或”的两位有一位是1,结果就是 1否则,结果为0,即有“1”为1,全“0”为0。 OR
逻辑异或指令XOR XOR >对两个操作数执行逻辑异或运算,结 果送到目的操作数 XOR reg, imm/reg/mem: reg+feg e imm/reg/mem 三[ XOR mem,imm/reg;mem← memb imm/reg v只有相"异或”的两位不相同,结果才是 (1;否则,结果为0,即相同为0,相异为1 XOR指令设置CFOF≡0,根据结果 设置SF、zF和PF状态,而对AF未定义
西 华 师 范 大 学 计 算 机 学 院 逻辑异或指令XOR ➢对两个操作数执行逻辑异或运算,结 果送到目的操作数 ➢XOR指令设置CF = OF = 0,根据结果 设置SF、ZF和PF状态,而对AF未定义 XOR reg,imm/reg/mem ;reg←reg⊕imm/reg/mem XOR mem,imm/reg ;mem←mem⊕imm/reg 只有相“异或”的两位不相同,结果才是 1;否则,结果为0,即相同为0,相异为1。 XOR
逻辑非指令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 西 华 师 范 大 学 计 算 机 学 院