3.6逻辑运算指令摘要.ppt
文本预览下载声明
复习:算术运算指令;3.6 逻辑运算指令;1、逻辑运算指令;(1) 逻辑”与” AND;例1:AND AL,0FH
若执行前:(AL)=35H (即‘5’:字符5的ASCII码值)
执行: 0011 0101
0000 1111 分离了AL后4位
0000 0101;例2:AL中有字符’a’~’z’, 将其转换成大写。;例3:测试AL的bit7,bit5,bit2是否都是1。
;对两个操作数进行按位逻辑”或”操作。
格式:OR dst, src
功能: (dst)∨(src)→(dst)
用途:对操作数的某几位置1;
对两操作数进行组合。;例1:把AL的第5位置为1。
;对操作数进行按位逻辑”非”操作。
格式:NOT mem/reg;对两个操作数按位进行”异或”操作。
格式:XOR dst, src
功能: (dst)⊕(src)→(dst)
用途:对reg清零(自身异或)
把reg/mem的某几位变反(与’1’异或);三种运算指令的操作数;三种运算指令的主要作用;AND指令可用于复位某些位(同0相与),不影响其他位:将BL中D3和D0位清0,其他位不变
and bl,1111 0110B
OR指令可用于置位某些位(同1相或),不影响其他位:将BL中D3和D0位置1,其他位不变
or bl, 0000 1001B
XOR指令可用于求反某些位(同1相异或),不影响其他位:将BL中D3和D0位求反,其他不变
xor bl, 0000 1001B;操作与AND指令类似,但不将”与”的结果送回,只影响标志位。
TEST指令常用于位测试,与条件转移指令一起用。;2、移位指令; 逻辑左移指令 SHL(Shift Left)
逻辑右移指令 SHR(Shift Right)
算术左移指令 SAL(Shift Arithmetic Left)
算术右移指令 SAR(Shift Arithmetic Right)
这4条指令的格式相同,以SAL为例:;逻辑左移指令SHL(Shift logical Left) ;逻辑右移指令SHR(Shift logical Right) ;算术左移指令SAL(Shift Arithmetic Left) ;非循环移位指令功能示意图;算术/逻辑左移 SHL / SAL指令;算术右移SAR指令;逻辑右移SHR指令;mov CL,4
mov AL,1111 0000B ;AL=F0H
SHL AL,1 ;AL=E0H
;CF=1,SF=1、ZF=0、PF=0,OF=0
SHR AL,1 ;AL=70H
;CF=0,SF=0、ZF=0、PF=0、OF=1
SAR AL,1 ;AL=38H
;CF=0,SF=0、ZF=0、PF=0、OF=0
SAR AL,CL ;AL=03h
;CF=1,SF=0、ZF=0、PF=1;算术移位——把操作数看做有符号数;
逻辑移位——把操作数看做无符号数。
移位位数放在CL寄存器中,如果只移1位,也
可以直接写在指令中。例如:
MOV CL,4
SHR AL,CL ;AL中的内容右移4位
影响C,P,S,Z,O标志。
结果未溢出时:
左移1位≡操作数*2
右移1位≡操作数/2;例:把AL中的数x乘10;用移位操作代替乘除法可提高运算速度
例:前例中计算x*10。
(1)采用乘法指令:
MOV BL,10
MUL BL
共需70~77个T周期。
(2)采用移位和加法指令:
SAL AL,1 ; 2T
MOV AH,AL ; 2T
SAL AL,1 ; 2T
SAL AL,1 ; 2T
ADD AL,AH ; 3T
只需11个T周期,仅相当于乘法的1/7。; 不含进位位的循环左移指令 ROL
不含进位位的循环右移指令 ROR
含进位位的循环左移指令 RCL
含进位位的循环右移指令 RCR;循环左移指令ROL(Rotate Left) ;CF;(a) ROL;ROL指令;ROR指令;RCL指令;RCR指令;循环移位举例:;DX;[1A02H];例3:把AL最低位送BL最低位,保持AL不变;移位指令小结;例题;2、试分析下面的程序段完成什么功能?
MOV CL,04H
SHL DX,CL
显示全部