第4节 逻辑运算指令
推荐给好友
打印
加入收藏
更新于2009-06-01 10:43:48


1.逻辑运算指令

(1)逻辑与指令 AND d, s ; d<-- d ∧ s


注:该指令影响标志位
使 O=0,C=0,
P,S,Z反映操作的结果

例1:屏蔽AL寄存器的低四位。
MOV AL,0FFh
AND AL ,0F0h


例2:屏蔽AL寄存器的高两位。
MOV AL,0FFh
AND AL ,3Fh


AND通常用于使某些位置0,其它位不变的情况。

(2)逻辑或指令 OR d, s ; d<-- d ∨ s


注:该指令影响标志位
使 O=0,C=0,
P,S,Z反映操作的结果

例3:使某数的第5、6位置1。
MOV AL,03H
OR AL,30H


OR指令通常用于将某些位置1

(3)逻辑异或指令 XOR d, s ; d<-- d ⊕ s


注:该指令影响标志位
使 O=0,C=0,
P,S,Z反映操作的结果

例6:使某数的D1、D0位取反,其它位不变。
MOV AL,11H
XOR AL,03H




(4)测试指令 TEST d, s ; d ∧ s


注:该指令影响标志位,结果不保存
使 O=0,C=0,
P,S,Z反映操作的结果。

例4:检测AL中的最低位是否位1,若为1则转移。


例5:检测CX内容是否位 0,为 0 则转移。


(5)逻辑非指令 NOT d ; d<-- /d
Rc---M
注:该指令不影响标志位

例如: NOT AL
              NOT BYTE PTR[BX]

2.移位指令

移位指令 d, count
循环指令 d, count


(1)逻辑左移指令 SHL d, count
(2)逻辑右移指令 SHR d, count
(3)算术左移指令 SAL d, count
(4)算术右移指令 SAR d, count
注:该指令影响标志位 C,S,Z,P 视结果而定;O 只当CNT=1时有效,移位后当最高有效位发生变化时(如1变0) O=1, 否则 O=0 。


例1:某数×10


例2:将 F0H 除以2。


移位指令的作用:
移位指令通常用来做 乘2 或 除2 的操作:
左移一位 操作数×2 ;
右移一位 操作数÷2

  • 算术移位指令适用于带符号数的运算。
  • 逻辑移位指令适用于无符号数的运算。

例3:将 带符号数 89H 乘以2。 


带符号数的运算结果的正确与否看溢出位:
O=1 溢出,结果错; O=0 不溢出,结果正确。
无符号数的运算结果的正确与否看进位位:
C=1 有进位,结果错; C=0 无进位,结果正确。

例5:请求出AL中“1”的个数,存在AH中。
MOV AH, 0
Again: SHL AL, 1
ADC AH, 0
CMP AL, 0
JNZ AGAIN
HLT 

MOV AH,0
MOV CL,8
Again: SHL AL,1
JNC Next
INC AH
Next: DEC CL
JNZ Again
HLT


3.循环指令

(1) 循环左移指令 ROL d, count
(2) 循环右移指令 ROR d, count
(3)带C循环左移指令 RCL d, count
(4)带C循环右移指令 RCR d, count
注:该指令影响标志位 C视结果而定;O 只当CNT=1时有效,移位后当最高有效位发生变化时(如1变0) O=1, 否则 O=0 。


例4:实现32位数的移位,要求左移4位。
方法1


方法2


循环移位指令的作用:
循环移位指令可以改变操作数
中所有位的位置

综合例题
例5:
在内存某一缓冲区中,存放着若干用BCD码表示的十进制数,每一个单元中存放两位,要求将它们转换成ASCⅡ码,存放在缓冲区,高4位的BCD码转换的ASCⅡ码放在地址较高的单元



 

 

上一节                    下一节

相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.