手机版

逻辑运算和移位指令

时间:2025-07-02   来源:未知    
字号:

3.3.3 逻辑运算和移位指令 1.逻辑运算指令● 运算规则:按位操作,无进/借位● 对标志位的影响(除NOT指令外):

CF OF SF ZF PF AF 0 0 * * * 无定义

根据运算结果设置

(1) 逻辑”与” AND对两个操作数进行按位逻辑“与”操作。 格式:AND dest, src 用途:保留操作数的某几位,清零其他位。 例1:保留AL中低4位,高4位清0。 AND AL, 0FH 例2:AL中有字符’a’~’z’, 将其转换成大写。 AND AL, 01011111B2

例3:测试AL的bit7,bit5,bit2是否都是1。 AND AL, 10100100B CMP AL, 10100100B JZ YES ; if match, go to YES … … ; if not match … … YES: … … ; goes here if all ‘1’

(2) 逻辑”或” OR对两个操作数进行按位逻辑”或”操作。 格式:OR dest, src 用途:对操作数的某几位置1;对两操作数 进行组合。 例1:把AL中的非压缩BCD码变成相应十进制 数的ASCII码。 OR AL, 30H4

例2:把AH和AL中的非压缩BCD码组合成压 缩的BCD码, 放到AL中。 MOV CL, 4 SHL AH, CL OR AL, AH例3:把AL的第5位置为1 OR AL, 00100000B

(3) 逻辑“非”(取反) NOT对操作数进行按位逻辑”非”操作。 格式:NOT mem/reg 例:NOT CX NOT BYTE PTR[DI]

(4) 逻辑”异或” XOR对两个操作数按位进行”异或”操作。 格式:XOR dest, src 用途:对reg清零(自身异或) 把reg/mem的某几位变反(与’1’异或)

例1:把AX寄存器清零。 例2:把DH的bit4,3变反 ① MOV AX,0 XOR DH,18H ② XOR AX,AX ③ AND AX,0 ④ SUB AX,AX7

(5) 测试指令TEST操作与AND指令类似,但不将”与”的结果送回, 只影响标志位。 TEST指令常用于位测试,与条件转移指令一起 用。 例:测试AL的内容是否为负数。 TEST AL,80H ;检查AL中D7=1? JNZ MINUS ;是1(负数),转MINUS … … ;否则(正数)不转移MINUS: … … … …8

2.移位指令 (1)非循环移位指令算术左移指令 SAL(Shift Arithmetic 算术右移指令 SAR(Shift Arithmetic 逻辑左移指令 SHL(Shift Left) 逻辑右移指令 SHR(Shift Right) 这4条指令的格式相同,以SAL为例: SALCL mem/reg, 1Left) Right)

;移位位数大于1时 ;移位位数等于1时9

移位指令执行的操作如下图所示:最高位 CF (a)算术/逻辑左移 SAL/SHL 最高位 CF 最低位 CF 0 (b)算术右移 SAR (c)逻辑右移 SHR10

最低位 0

最高位

最低位

非循环移位指令功能示意图

算术移位——把操作数看做有符号数;

逻辑移位——把操作数看做无符号数。 移位位数放在CL寄存器中,如果只移1位,也 可以直接写在指令中。例如: MOV CL,4 SHR AL,CL ;AL中的内容右移4位 影响C,P,S,Z,O标志。 结果未溢出时: 左移1位≡操作数*2 右移1位≡操作数/211

例:把AL中的数x乘10 因为10=8+2=23+21,所以可用移位实现乘10 操作。程序如下: SAL AL,1 ; 2x MOV AH,AL SAL AL,1 ; 4x SAL AL,1 ; 8x

ADD AL,AH ; 8x+2x = 10x

(2)循环移位指令不含进位位的循环左移指令 ROL 不含进位位的循环右移指令 ROR 含进位位的循环左移指令 RCL 含进位位的循环右移指令 RCR 格式同非循环移位指令。 移位位数放在CL寄存器中,如果只移1位,

也可以直接写在指令中。 循环移位指令只影响标志位CF和OF。13

这4条指令的功能如下图示:最高位 CF (a) ROL 最高位 CF (b) ROR 最低位 CF (d) RCR 最高位 最低位 CF (c) RCL 最低位 最高位 最低位

循环移位指令功能示意图14

用移位操作代替乘除法可提高运算速度

例:前例中计算 x×10。 (1)采用乘法指令:MOV BL,10 MUL BL

共需70~77个T周期。 (2)采用移位和加法指令:SAL MOV SAL SAL ADD AL,1 AH,AL AL,1 AL,1 AL,AH ; ; ; ; ; 2T 2T 2T 2T 3T15

只需11个T周期,仅相当于乘法的1/7。

循环移位举例:例1:将AL的高4位与低4位互换。 MOV CL,4 ROL AL,CL 例2:将1A00H内存单元中的双字循环左移1位。 CMP [1A00H],8000H CMC RCL WORD PTR[1A02H],1 RCL WORD PTR[1A00H],116

…… 此处隐藏:164字,全部文档内容请下载后查看。喜欢就下载吧 ……
逻辑运算和移位指令.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)