文档详情

3.6逻辑运算指令摘要.ppt

发布:2017-06-15约2.05千字共43页下载文档
文本预览下载声明
复习:算术运算指令;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
显示全部
相似文档