5逻辑运算和移位指令 1.docx

上传人:b****8 文档编号:8768643 上传时间:2023-02-01 格式:DOCX 页数:10 大小:47.20KB
下载 相关 举报
5逻辑运算和移位指令 1.docx_第1页
第1页 / 共10页
5逻辑运算和移位指令 1.docx_第2页
第2页 / 共10页
5逻辑运算和移位指令 1.docx_第3页
第3页 / 共10页
5逻辑运算和移位指令 1.docx_第4页
第4页 / 共10页
5逻辑运算和移位指令 1.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

5逻辑运算和移位指令 1.docx

《5逻辑运算和移位指令 1.docx》由会员分享,可在线阅读,更多相关《5逻辑运算和移位指令 1.docx(10页珍藏版)》请在冰豆网上搜索。

5逻辑运算和移位指令 1.docx

5逻辑运算和移位指令1

三、逻辑运算和移位指令

 

逻辑运算和移位指令

逻辑运算指令

ANDDST,SRC

逻辑与指令

ORDST,SRC

逻辑或指令

XORDST,SRC

逻辑异或指令

TESTDST,SRC

测试指令

NOTOPR

逻辑非指令

移位指令

SHLOPR,CNT

逻辑左移指令

SALOPR,CNT

算术左移指令

SHROPR,CNT

逻辑右移指令

SAROPR,CNT

算术右移指令

ROLOPR,CNT

左循环移位指令

ROROPR,CNT

右循环移位指令

RCLOPR,CNT

带进位左循环移位指令

RCROPR,CNT

带进位右循环移位指令

SHLDDST,REG,CNT

SHRDDST,REG,CNT

 

逻辑运算指令

(1)AND逻辑与指令

格式:

ANDDST,SRC

功能:

(DST)←(DST)∧(SRC)(按位与)

操作数:

 

ANDMEM,IDATA

ANDREG,IDATA

ANDREG,MEM

ANDMEM,REG

ANDREG,REG

对标志寄存器的影响:

1)CF=OF=0;

2)根据运算结果设置SF、ZF、PF标志;

3)AF无定义。

说明:

1)利用AND指令,可以保留特定位(与1),同时屏蔽掉其它位(与0),以检测特定位。

2)利用AND指令,可以将某些特定位设置为0(与0),同时使其余位保持原值不变化(与1)。

3)一个寄存器和自身进行逻辑与运算,该寄存器内容不变。

但该运算影响了SF、ZF、PF三个标志位,并使OF和CF清零。

利用该特性,可以判断一个数据的正负、是否为零、以及数据的奇偶性。

 

(2)OR逻辑或指令

格式:

ORDST,SRC

功能:

(DST)←(DST)∨(SRC)(按位或)

操作数:

 

ORMEM,IDATA

ORREG,IDATA

ORREG,MEM

ORMEM,REG

ORREG,REG

对标志寄存器的影响:

1)CF=OF=0;

2)根据运算结果设置SF、ZF、PF标志;

3)AF无定义。

说明:

1)利用OR指令,可以将某些特定位设置为1(或1),同时使其余位保持原值不变化(或0)。

2)一个寄存器和自身进行逻辑或运算,该寄存器内容不变。

但该运算影响了SF、ZF、PF三个标志位,并使OF和CF清零。

利用该特性,可以判断一个数据的正负、是否为零、以及数据的奇偶性。

 

(3)XOR异或指令

格式:

XORDST,SRC

功能:

(DST)←(DST)⊕(SRC)(按位异或)

操作数:

 

XORMEM,IDATA

XORREG,IDATA

XORREG,MEM

XORMEM,REG

XORREG,REG

对标志寄存器的影响:

1)CF=OF=0;

2)根据运算结果设置SF、ZF、PF标志;

3)AF无定义。

说明:

1)用XOR指令,可以将某些特定位“求反”(异或1),同时使其余位保持原值不变化(异或0)。

2)利用XOR指令,还可以将某个寄存器内容清零。

例如:

XORAX,AX;AX清0,设置CF=0

 

(4)TEST测试指令

格式:

TESTOPR1,OPR2

功能:

(OPR1)∧(OPR2)(按位与),操作结果不保留,只根据操作结果的特征,设置条件码。

操作数:

ANDMEM,IDATA

ANDREG,IDATA

ANDREG,MEM

ANDMEM,REG

XX文库-让每个人平等地提升自我ANDREG,REG

对标志寄存器的影响:

1)CF=OF=0;

2)根据运算结果设置SF、ZF、PF标志;

3)AF无定义。

说明:

TEST指令经常被用于进行位测试,例如:

TESTAL,01H

JZZERO;AL第0位为0,则跳转到标号ZERO处,否则继续执行

 

(5)NOT逻辑非指令

格式:

NOTOPR

功能:

(OPR)←将(OPR)按位取反

操作数:

NOTREG

NOTMEM

对标志寄存器的影响:

对任何标志位都没有影响。

 

移位指令

操作数

①OPR:

寄存器操作数REG、存储器操作数MEM

②CNT:

立即数1,或者寄存器CL。

对标志寄存器的影响:

1CF位:

根据各条指令的规定来设置。

②OF位:

当CNT=1,既移位次数等于1时,如果移位后最高有效位的值发生变化,则OF=1;否则,OF=0。

当CNT>1时,既移位次数大于1时,该位无定义。

③SF、ZF、PF位:

根据移位后的结果进行设置;

④AF位无定义。

说明:

移位指令经常用来作乘以2/除以2的操作。

算术移位指令适用于带符号数的运算,SAL用来乘以2,SAR用来除以2。

逻辑移位指令适用于无符号数的运算,SHL用来乘以2;SHR用来除以2。

 

(1)SHL/SAL逻辑左移/算术左移指令

格式:

SHL/SALOPR,CNT

功能:

将操作数(OPR)的内容,左移CNT位,最高位给CF,最低位补0。

见下图所示:

(2)SHR逻辑右移指令

格式:

SHROPR,CNT

功能:

将操作数(OPR)的内容,右移CNT位,最高位补0,最低位送给CF。

见下图所示:

(3)SAR算术右移指令

格式:

SAROPR,CNT

功能:

将操作数(OPR)的内容,右移CNT位,最高位右移,同时再用其自身的值填入,最低位送给CF。

见下图所示:

 

循环移位指令

操作数

OPR:

寄存器操作数REG,存储器操作数MEM。

CNT:

立即数1,或者寄存器CL。

对标志寄存器的影响:

①CF位:

根据各条指令的规定设置;

②OF位:

当CNT=1,既移位次数等于1时,如果移位后最高有效位的值发生变化,则OF=1;否则,OF=0。

当CNT>1,既移位次数大于1时,该位无定义

③循环移位指令不影响除CF和OF以外的其他任何条件标志。

说明:

①循环移位指令可以用来改变操作数中所有位的位置,这在程序设计中还是很有用的。

②利用循环移位指令,可以对寄存器或存储器中的任一位进行位测试。

③利用带进位循环移位指令,还可以将两个以上的寄存器或存储器单元组合起来一起移位。

例如:

SHLAX,1;将DX:

AX左移一位,最高位给CF

RCLDX,1

(1)ROL左循环移位指令

格式:

ROLOPR,CNT

功能:

将操作数(OPR)的内容,左移CNT位,最高位给CF,同时补给最低位。

见下图所示:

 

(2)ROR右循环移位指令

格式:

ROROPR,CNT

功能:

将操作数(OPR)的内容,右移CNT位,最低位送给CF,同时补给最高位。

见下图所示:

 

(3)RCL带进位左循环移位指令

格式:

RCLOPR,CNT

功能:

 

(4)RCR带进位右循环移位指令

格式:

RCROPR,CNT

功能:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1