四.逻辑指令 指令分类 逻辑运算AND、OR、XOR、NOT、TEST 移位 SHL、SAL、SHR、SAR 循环移位 ROL、ROR、RCL、RCR
四.逻辑指令 指令分类 逻辑运算 AND、OR、XOR、NOT、TEST 移 位 SHL、SAL、SHR、SAR 循环移位 ROL、ROR、RCL、RCR
逻辑运算:与、或、非、异 特点:二进制数运算,按位进行 与运算:有0则0,全1则 例 11011100 B0 01 ∧10111010 A∧B0001 10011000 或运算:有1则1,全0则0 A00 例:10101100 B0101 V00111001 AB0111 10111101
逻辑运算 :与、或、非、异或 特点:二进制数运算 ,按位进行 `与`运算:有0则0,全1则 `或`运算:有1则1,全0则0 A B 0 0 0 1 1 0 1 1 A∧B 0 0 0 1 A B 0 0 0 1 1 0 1 1 A∨B 0 1 1 1 例: 1101 1100 ∧ 1011 1010 1001 1000 例: 1010 1100 ∨ 0011 1001 1011 1101
非运算:0则1,1则0 例 A01 10111010 A|10 01000101 异或运算:异则1,同则0 例:10101100 B ¥00111001 AB0110 10010101
`非`运算: 0则1,1则0 `异或`运算:异则1,同则0 A 0 1 A 1 0 A B 0 0 0 1 1 0 1 1 A∨ B 0 1 1 0 例: 1011 1010 0100 0101 例: 1010 1100 ∨ 0011 1001 1001 0101
1.逻辑运算指令 指令格式 执行操作 and dst, src (dst) (dst)∧(src) oR dst, src (dst) (dst)∨(src) NOT oprd (oprd)←(oprd) XOR dst, src (dst) (dst)y(src) TEST oprdl, oprd2 (oprd1)A(oprd2)
指令格式 执行操作 AND dst,src (dst) ← (dst)∧(src) OR dst,src (dst) ← (dst)∨(src) NOT oprd (oprd)← (oprd) XOR dst,src (dst) ← (dst)∨(src) TEST oprd1,oprd2 (oprd1)∧(oprd2) 1. 逻辑运算指令
AND AL,00001111B OR BX. 00FFH NOT CL XOR DL, AL TEST AL 0000 0001B ●除NOT指令单操作数外,其它均为双操作数 ●可进行字节或字操作 ●NOT指令不影响标志 其他指令了置CF、OF为0,AF不定(无意义) SF、ZF、PF据结果置位 ●TEST只影响标志位,不影响操作数
AND AL , 0000 1111B OR BX , 00FFH NOT CL XOR DL, AL TEST AL, 0000 0001B ⚫ 除NOT指令单操作数外,其它均为双操作数 ⚫ 可进行字节或字操作 ⚫ NOT指令不影响标志 ⚫ TEST只影响标志位,不影响操作数 其他指令 置CF、OF为0,AF不定 ( 无意义 ) SF、ZF、PF据结果置位
例数字字符的ASCⅡ→对应的二进制数 ASCII 数字0~930H~39H 00111001B 39H ∧0000111B OFH 00001001B 09H 应用: MOV AH.I 利用DOS调用 NT 21H ;从键盘输入字符到AL中 AND AL,0000111;高4位为0,低4位不变
例 数字字符的ASCII → 对应的二进制数 ASCII 数字 0~9 30H~39H 应用: MOV AH, 1 ;利用DOS调用 INT 21H ;从键盘输入字符到AL中 AND AL, 0000 1111B ;高4位为0,低4位不变 、、、 0011 1001B 39 H ∧ 0000 1111 B 0F H 0000 1001B 09 H
逻辑运算常用于使操作数的某位为0或1,或测试某位为0还是1。 ●使某位为1 用该位与1相或,不变的位与0或 使某位为0 用该位与0相与,不变的位与1与。 ●使某位求反 用该位与1异或,不变的位与0异或。 ●测试某位的值 用TEST指令,据标志判断
逻辑运算常用于使操作数的某位为0或1, 或测试某位为0还是1。 ⚫使某位为1 用该位与1 相或,不变的位与0或。 ⚫使某位为0 用该位与0 相与,不变的位与1与。 ⚫使某位求反 用该位与1 异或,不变的位与0异或。 ⚫测试某位的值 用TEST指令,据标志判断
例2IH端口管理中断系统,管理8个外设的中断 76543210 10|100|010 D7 D6 D5 D4 D3 D2 D1 DO 为0,允许键盘中断 为1,禁止 允许键盘中断: AL 21H 读入21端口内容 AND AL,1110B;置D1=0,其他位不变 OUT 21H AL ;送出屏蔽字到21H端口 禁止键盘中断: AL 21H ORAL,000000;使D1为1 OUT 2IH AL
例 21H端口管理中断系统,管理8个外设的中断 为0, 允许键盘中断 为1, 禁止 7 6 5 4 3 2 1 0 1 0 1 0 0 0 1 0 D7 D6 D5 D4 D3 D2 D1 D0 允许键盘中断: IN AL,21H ;读入21端口内容 AND AL,1111 1101B ;置D1 = 0,其他位不变 OUT 21H ,AL ;送出屏蔽字到21H端口 禁止键盘中断: IN AL,21H OR AL,0000 0010B ;使D1为1 OUT 21H,AL
例379H端口的D7存放打印机的状态 765432 10100|0 0 D7 D6 D5 D4 D3 D2 DI DO 为0,表示打印机忙 为1,打印机空闲 用查询方式控制打印机工作: MOV DX. 379H ask N AL。DX ;从379H端口读状态 TEST AL,100000;检测D7位 JZ ask 为0,继续查询 print: ;输出字符打印
例 379H端口的D7存放打印机的状态 为0, 表示打印机忙 为1, 打印机空闲 7 6 5 4 3 2 1 0 1 0 1 0 0 0 1 0 D7 D6 D5 D4 D3 D2 D1 D0 用查询方式控制打印机工作: MOV DX, 379H ask: IN AL, DX ;从379H端口读状态 TEST AL, 1000 0000B ;检测D7位 JZ ask ;为0,继续查询 print: 、、、 ;输出字符打印
2.移位指令 指令格式 执行操作 SHL oprd,tcL CF+EI +0 SAL oprd, LCL CF 10 SHR oprd, CL 0- +ECE SAR oprd, CF CL
2 . 移位指令 SHL oprd, 1 CL SAL oprd, 1 CL SHR oprd, 1 CL SAR oprd, 1 CL CF 0 CF 0 0 CF CF 指令格式 执行操作