逻辑运算和移位指令

上传人:206****923 文档编号:37696005 上传时间:2018-04-21 格式:DOC 页数:10 大小:97KB
返回 下载 相关 举报
逻辑运算和移位指令_第1页
第1页 / 共10页
逻辑运算和移位指令_第2页
第2页 / 共10页
逻辑运算和移位指令_第3页
第3页 / 共10页
逻辑运算和移位指令_第4页
第4页 / 共10页
逻辑运算和移位指令_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《逻辑运算和移位指令》由会员分享,可在线阅读,更多相关《逻辑运算和移位指令(10页珍藏版)》请在金锄头文库上搜索。

1、三、逻辑运算和移位指令三、逻辑运算和移位指令AND DST,SRC逻辑与指令逻辑与指令OR DST,SRC逻辑或指令逻辑或指令XOR DST,SRC逻辑异或指令逻辑异或指令TEST DST,SRC测试指令测试指令逻辑运算逻辑运算 指令指令NOT OPR逻辑非指令逻辑非指令SHL OPR,CNT逻辑左移指令逻辑左移指令SAL OPR,CNT算术左移指令算术左移指令SHR OPR,CNT逻辑右移指令逻辑右移指令SAR OPR,CNT算术右移指令算术右移指令ROL OPR,CNT左循环移位指令左循环移位指令ROR OPR,CNT右循环移位指令右循环移位指令RCL OPR,CNT带进位左循环移位指令带

2、进位左循环移位指令RCR OPR,CNT带进位右循环移位指令带进位右循环移位指令SHLD DST,REG,CNT逻逻 辑辑 运运 算算 和和 移移 位位 指指 令令移位指令移位指令SHRD DST,REG,CNT逻辑运算指令逻辑运算指令(1)AND 逻辑与指令逻辑与指令格式:格式:AND DST ,SRC 功能:功能: (DST)(DST)(SRCSRC) (按位与)(按位与)操作数:操作数: AND MEM , IDATA AND REG , IDATAAND REG , MEMAND MEM , REG AND REG , REG对标志寄存器的影响:对标志寄存器的影响: 1)CF=OF=0

3、; 2)根据运算结果设置根据运算结果设置 SF、ZF、PF 标志;标志; 3)AF 无定义。无定义。说明:说明: 1)利用)利用 AND 指令,可以指令,可以保留特定位保留特定位(与(与 1) ,同时,同时屏蔽掉其它位屏蔽掉其它位(与(与 0) , 以检测特定位。以检测特定位。2)利用)利用 AND 指令,可以指令,可以将某些特定位设置为将某些特定位设置为 0(与(与 0) ,同时,同时使其余位保使其余位保 持原值不变化持原值不变化(与(与 1) 。3)一个寄存器和自身进行逻辑与运算,该寄存器内容不变。但该运算影响)一个寄存器和自身进行逻辑与运算,该寄存器内容不变。但该运算影响 了了 SF、Z

4、F、PF 三个标志位,并使三个标志位,并使 OF 和和 CF 清零。清零。利用该特性,可以判断一利用该特性,可以判断一 个数据的正负、是否为零、以及数据的奇偶性个数据的正负、是否为零、以及数据的奇偶性。通用寄存器通用寄存器立即数立即数存储器存储器(2)OR 逻辑或指令逻辑或指令格式:格式:OR DST ,SRC 功能:功能: (DST)(DST)(SRCSRC) (按位或)(按位或)操作数:操作数: OR MEM , IDATA OR REG , IDATAOR REG , MEMOR MEM , REG OR REG , REG对标志寄存器的影响:对标志寄存器的影响: 1)CF=OF=0;

5、2)根据运算结果设置根据运算结果设置 SF、ZF、PF 标志;标志; 3)AF 无定义。无定义。说明:说明: 1)利用)利用 OR 指令,可以指令,可以将某些特定位设置为将某些特定位设置为 1(或(或 1) ,同时,同时使其余位保持使其余位保持 原值不变化原值不变化(或(或 0) 。2)一个寄存器和自身进行逻辑或运算,该寄存器内容不变。但该运算影响)一个寄存器和自身进行逻辑或运算,该寄存器内容不变。但该运算影响 了了 SF、ZF、PF 三个标志位,并使三个标志位,并使 OF 和和 CF 清零。清零。 利用该特性,可以判断一个数据的正负、是否为零、以及数据的奇偶性利用该特性,可以判断一个数据的正

6、负、是否为零、以及数据的奇偶性。通用寄存器通用寄存器立即数立即数存储器存储器(3)XOR 异或指令异或指令格式:格式:XOR DST ,SRC 功能:功能: (DST)(DST)(SRCSRC) (按位异或)(按位异或)操作数:操作数: XOR MEM , IDATA XOR REG , IDATAXOR REG , MEMXOR MEM , REG XOR REG , REG对标志寄存器的影响:对标志寄存器的影响: 1)CF=OF=0; 2)根据运算结果设置根据运算结果设置 SF、ZF、PF 标志;标志; 3)AF 无定义。无定义。说明:说明: 1)用)用 XOR 指令,可以指令,可以将某些

7、特定位将某些特定位“求反求反” (异或(异或 1) ,同时,同时使其余位保使其余位保 持原值不变化持原值不变化(异或(异或 0) 。2)利用)利用 XOR 指令,还可以指令,还可以将某个寄存器内容清零将某个寄存器内容清零。 例如:例如: XOR AX,AX ;AX 清清 0,设置,设置 CF = 0通用寄存器通用寄存器立即数立即数存储器存储器(4)TEST 测试指令测试指令格式:格式:TEST OPR1 ,OPR2 功能:功能: (OPR1)(OPR2OPR2) (按位与)(按位与) ,操作结果不保留,只根据操作结果的特,操作结果不保留,只根据操作结果的特 征,设置条件码。征,设置条件码。操作

8、数:操作数: AND MEM , IDATA AND REG , IDATAAND REG , MEMAND MEM , REG AND REG , REG对标志寄存器的影响:对标志寄存器的影响: 1)CF=OF=0; 2)根据运算结果设置根据运算结果设置 SF、ZF、PF 标志;标志; 3)AF 无定义。无定义。说明:说明: TEST 指令经常被用于进行指令经常被用于进行位测试位测试,例如:,例如: TEST AL,01H JZ ZERO ;AL 第第 0 位为位为 0,则跳转到标号,则跳转到标号 ZERO 处,否则继续执行处,否则继续执行 (5)NOT 逻辑非指令逻辑非指令格式:格式:NO

9、T OPR 功能:功能: (OPR)将(将(OPROPR)按位取反)按位取反操作数:操作数: NOT REG NOT MEM 对标志寄存器的影响:对标志寄存器的影响: 对任何标志位都没有影响。对任何标志位都没有影响。移位指令移位指令操作数操作数 OPROPR:寄存器操作数寄存器操作数 REGREG、存储器操作数存储器操作数 MEMMEM CNTCNT:立即数立即数 1 1,或者,或者寄存器寄存器 CLCL。对标志寄存器的影响:对标志寄存器的影响: CFCF 位位:根据各条指令的规定来设置。:根据各条指令的规定来设置。 OFOF 位位:当当 CNTCNT = = 1 1,既移位次数等于,既移位次

10、数等于 1 1 时,如果移位后时,如果移位后最高有效位的最高有效位的值值发生变化,则发生变化,则 OFOF = = 1 1;否则,;否则,OFOF = = 0 0 。当当 CNTCNT 1 1 时,既移位次数大于时,既移位次数大于 1 1 时,该位无定义。时,该位无定义。 SFSF、ZFZF、PFPF 位位:根据移位后的结果进行设置;:根据移位后的结果进行设置; AFAF 位无定义位无定义。说明:说明: 移位指令经常用来作移位指令经常用来作乘以乘以 2/2/除以除以 2 2 的操作的操作。算术移位指令算术移位指令适用于适用于带符号数带符号数的运算,的运算,SALSAL 用来乘以用来乘以 2 2

11、,SARSAR 用用来除以来除以 2 2 。逻辑移位指令逻辑移位指令适用于适用于无符号数无符号数的运算,的运算,SHLSHL 用来乘以用来乘以 2 2;SHRSHR 用用来除以来除以 2 2 。(1 1)SHL/SALSHL/SAL 逻辑左移逻辑左移/ /算术左移指令算术左移指令格式:格式: SHL/SALSHL/SAL OPROPR ,CNTCNT功能:功能:将操作数(将操作数(OPROPR)的内容,左移)的内容,左移 CNTCNT 位,最高位给位,最高位给 CFCF,最低位补,最低位补0 0。见下图所示:。见下图所示:(2 2)SHRSHR 逻辑右移指令逻辑右移指令格式:格式: SHRSH

12、R OPROPR ,CNTCNT功能:功能:将操作数(将操作数(OPROPR)的内容,右移)的内容,右移 CNTCNT 位,最高位补位,最高位补 0 0,最低位送,最低位送给给 CFCF。见下图所示:。见下图所示:(3 3)SARSAR 算术右移指令算术右移指令格式:格式: SARSAR OPROPR ,CNTCNT功能:功能:将操作数(将操作数(OPROPR)的内容,右移)的内容,右移 CNTCNT 位,最高位右移,同时再用位,最高位右移,同时再用其自身的值填入,最低位送给其自身的值填入,最低位送给 CFCF。见下图所示:。见下图所示:0 0CF0 0CFCFCFCF循环移位指令循环移位指令

13、操作数操作数OPROPR:寄存器操作数:寄存器操作数 REGREG,存储器操作数,存储器操作数 MEMMEM 。CNTCNT:立即数:立即数 1 1,或者寄存器,或者寄存器 CLCL 。对标志寄存器的影响:对标志寄存器的影响: CFCF 位位:根据各条指令的规定设置;:根据各条指令的规定设置; OFOF 位位: 当当 CNTCNT = = 1 1,既移位次数等于,既移位次数等于 1 1 时,如果移位后时,如果移位后最高有效位的最高有效位的值值发生变化,则发生变化,则 OFOF = = 1 1;否则,;否则,OFOF = = 0 0 。当当 CNTCNT 1 1,既移位次数大于,既移位次数大于

14、1 1 时,该位无定义时,该位无定义 循环移位指令不影响循环移位指令不影响除除 CFCF 和和 OFOF 以外的其他任何条件标志以外的其他任何条件标志。说明:说明: 循环移位指令可以用来改变循环移位指令可以用来改变操作数中所有位的位置操作数中所有位的位置,这在程,这在程序设计中还是很有用的。序设计中还是很有用的。 利用循环移位指令,可以对利用循环移位指令,可以对寄存器或存储器中的任一位寄存器或存储器中的任一位进行进行位测试。位测试。 利用利用带进位循环移位指令带进位循环移位指令,还可以将,还可以将两个以上的寄存器或存两个以上的寄存器或存储器单元储器单元组合起来一起移位。组合起来一起移位。例如:

15、例如: SHLSHL AXAX,1 1; 将将 DXDX:AXAX 左移一位,最高位给左移一位,最高位给 CFCFRCLRCL DXDX,1 1(1 1)ROLROL 左循环移位指令左循环移位指令格式:格式: ROLROL OPROPR ,CNTCNT功能:功能:将操作数(将操作数(OPROPR)的内容,左移)的内容,左移 CNTCNT 位,最高位给位,最高位给 CFCF,同时补给,同时补给最低位。见下图所示:最低位。见下图所示:(2 2)RORROR 右循环移位指令右循环移位指令格式:格式: RORROR OPROPR ,CNTCNT功能:功能:将操作数(将操作数(OPROPR)的内容,右移)的内容,右移 CNTCNT 位,最低位送给位,最低位送给 CFCF,同时补,同时补给最高位。见下图所示:给最高位。见下图所示:CFCFCFCF(3 3)RCLRCL 带进位左循环移位指令带进位左循环移位指令格式:格式: RCLRC

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号