首页 理论教育 逻辑非指令、逻辑左移指令和逻辑右移指令

逻辑非指令、逻辑左移指令和逻辑右移指令

时间:2023-11-16 理论教育 版权反馈
【摘要】:逻辑非指令指令格式:NOT OPD功能:将目的地址中的内容取反后送回目的地址中。图3-11 移位指令操作示意图算术、逻辑移位指令①算术左移和逻辑左移指令。②逻辑右移指令。逻辑移位指令常用于无符号数的乘2n和除2n运算。

逻辑非指令、逻辑左移指令和逻辑右移指令

逻辑指令提供了对二进制位的操作功能,包括逻辑运算指令和移位指令,这些指令可以直接对寄存器或存储器中的位进行操作。

1.逻辑运算指令

(1)逻辑与指令

指令格式:AND OPD,OPS

功能:(OPD)Λ(OPS)→OPD,即目的操作数与源操作数作逻辑乘运算(与运算),结果存入目的地址中。

对标志位的影响:对OF、CF、SF、ZF、PF有影响,对AF未定义,其中OF、CF置为0,SF、ZF、PF根据运算结果置值。

例3-22已知AL中有一个十进制数ASCII码,将其转换成非压缩BCD码形式(数字字符ASCII码高4位置零即为非压缩BCD码)。

978-7-111-42233-4-Chapter03-36.jpg

(2)逻辑或指令

指令格式:OR OPD,OPS

功能:(OPD)V(OPS)→OPD,即目的操作数与源操作数做逻辑加运算(或运算),结果存入目的地址中。

对标志位的影响:同逻辑与运算指令。

例3-23将AL中的非压缩BCD码转换成十进制数ASCII码。

978-7-111-42233-4-Chapter03-37.jpg

(3)逻辑非指令

指令格式:NOT OPD

功能:将目的地址中的内容取反后送回目的地址中。

对标志位的影响:无。

例3-24 将AL中的值按位取反。

978-7-111-42233-4-Chapter03-38.jpg

(4)逻辑异或指令

指令格式:XOR OPD,OPS

功能:(OPD)⊕(OPS)→OPD,即目的操作数与源操作数做按位加运算(异或运算),结果存入目的地址中。

对标志位的影响:同逻辑与运算指令。

例3-25 实现AL中字母大小写转换,并将BX清零。

978-7-111-42233-4-Chapter03-39.jpg

(5)测试指令

指令格式:TEST OPD,OPS

功能:(OPD)Λ(OPS),即目的操作数与源操作数做逻辑乘运算(与运算),并根据结果设置标志位,目的地址和源地址中的内容不变。

对标志位的影响:同逻辑与运算指令。

该指令主要用于检测源操作数中为1的位相对应的目的地址中的位是否为0,它的后面往往跟着转移地址,根据测试的结果决定转移方向。

例3-26 设某并行打印机的状态端口是379H,其D7位是忙/闲位。若D7为0,则表示忙,为1则表示闲。测试该打印机的当前状态,若为忙则继续测试,否则执行下一条指令。

978-7-111-42233-4-Chapter03-40.jpg

2.移位指令

移位指令包括算术移位指令、逻辑移位指令和循环移位指令,这些指令均有统一的语句格式:

978-7-111-42233-4-Chapter03-41.jpg

其功能是:将目的操作数中的所有位按操作符所规定的方式移位1位或按寄存器CL所规定的次数移动(0~255)位,然后将结果送入目的地址中。其目的操作数可以是由各种寻址方式所提供的8位(或16位)的寄存器或存储器数据。各移位指令的操作示意图如图3-11所示。

978-7-111-42233-4-Chapter03-42.jpg

图3-11 移位指令操作示意图

(1)算术、逻辑移位指令

①算术左移和逻辑左移指令。

指令格式:SAL OPD,1 或 SAL OPD,CL(www.xing528.com)

SHL OPD,1 或 SHL OPD,CL

功能:将目的操作数向左移动指定的位数,而最高位移入CF,低位补入相应个数的0。CF的内容为最后移入位的值,如图3-11a所示。

对标志位的影响:除AF未定义外,对其他状态标志位均有影响。

②逻辑右移指令。

指令格式:SHR OPD,1 或 SHR OPD,CL

功能:将目的操作数向右移动指定的位数,而最低位移入CF,高位补入相应个数的0。CF的内容为最后移入位的值,如图3-11b所示。

对标志位的影响:除AF未定义外,对其他状态标志位均有影响。

逻辑移位指令常用于无符号数的乘2n和除2n运算。

例3-27 编写一个程序段实现56×10,结果存放在AX中。

978-7-111-42233-4-Chapter03-43.jpg

例3-28 设AL中存放两个压缩的BCD码,试将它们变成两个非压缩的BCD码,分别存放在BH和BL中。

978-7-111-42233-4-Chapter03-44.jpg

③算术右移指令。

指令格式:SAR OPD,1 或 SAR OPD,CL

功能:将目的操作数向右移动指定的位数,而最高位保持不变,最低位移入CF。CF的内容为最后移入位的值,如图3-11c所示。

对标志位的影响:除AF未定义外,对其他状态标志位均有影响。

算术移位指令常用于有符号数的乘2n和除2n运算。

例3-29 编写一个程序段实现(-1024)÷16,结果存放在AX中。

978-7-111-42233-4-Chapter03-45.jpg

注意:无论是有符号数还是无符号数运算,都是在不发生溢出的前提下,运算结果才是正确的。

(2)循环移位指令

①循环左移指令。

指令格式:ROL OPD,1 或 RO LOPD,CL

功能:该指令每执行一次,将目的操作数向左移动一位,最高位一方面传送至CF,另一方面循环传送至操作数的最低位,如图3-11d所示。

对标志位的影响:只影响CF和OF。

例3-30 编写一个程序段实现将AL的高4位与低4位互换。

978-7-111-42233-4-Chapter03-46.jpg

②循环右移指令。

指令格式:ROR OPD,1 或 ROR OPD,CL

功能:该指令每执行一次,将目的操作数向右移动一位,最低位一方面传送至CF,另一方面循环传送至操作数的最高位,如图3-11e所示。

对标志位的影响:只影响CF和OF。

③带进位的循环左移指令。

指令格式:RCL OPD,1 或 RCL OPD,CL

功能:该指令每执行一次,将目的操作数向左移动一位,最高位传送至CF,而原来的CF的内容传送至操作数的最低位,如图3-11f所示。

对标志位的影响:只影响CF和OF。

④带进位的循环右移指令。

指令格式:RCR OPD,1 或 RCR OPD,CL

功能:该指令每执行一次,将目的操作数向右移动一位,原CF的内容传送至最高位,操作数最低位传送至CF,如图3-11g所示。

对标志位的影响:只影响CF和OF。

例3-31 编写一个程序段实现将AL的最低位送入BL的最低位,且AL保持不变。

978-7-111-42233-4-Chapter03-47.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈