实验八 移位操作实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八移位操作实验
一、实验要求和目的
1.了解汇编语言移位操作指令;
2.熟悉汇编语言逻辑移位指令的使用方法;
3.掌握利用汇编语言逻辑移位运算指令实现程序设计的方法。
二、软硬件环境
1.硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;
2.软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。
三、实验涉及的主要知识单元
移位指令主要包括算术移位、逻辑移位、循环移位,以下分三类介绍。其中统一的语句格式为:
操作符OPD,1
操作符OPD,CL
功能为将目的操作数的所有位按操作符规定的方式移动1位或按寄存器CL规定的次数(0~255)移动,结果送入目的地址。
1、算术移位
(1)算术左移指令SAL
格式:SAL OPD 1或CL
描述:
将(OPD)向左移动CL指定的次数,最低位补入相应的0,CF的内容为最后移入位的值。如图8-1所示,受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。
图8-1 SAL
(2)算术右移指令SAR
格式:SAR OPD 1或CL
描述:
将(OPD)向右移动CL指定的次数且最高位保持不变;CF的内容为最后移入位的值。如图8-2所示,受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。
图8-2 SAR
2、逻辑移位
(1)逻辑左移
格式:SHL OPD 1或CL
描述:
把目的操作数的低位向高位移CL规定的次数,空出的低位补0,CF的内容为最后移入位的值。与算术左移相同,如图8-1所示,受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。
(2)逻辑右移
格式:SHR OPD 1或CL
描述:
把目的操作数的高位向低位移CL规定的次数,空出的高位补0,CF的内容为最后移入位的值。如图8-3所示,受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。
图8-3 SHR
3、循环移位
循环移位包括不带进位的循环移位指令ROL、ROR和带进位的循环移位指令RCL、RCR。
(1)不带进位循环左移指令ROL
格式:ROL OPD 1或CL
描述:
把目的操作数的低位向高位移CL规定的次数,移出的位不仅要进入CF,而且还要填补空出的位,CF的内容为最后移入位的值。如图8-4所示,受影响的标志位:CF、OF。
图8-4 ROL
(2)不带进位循环右移指令ROR
格式:ROR OPD 1或CL
描述:
把目的操作数的高位向低位移CL规定的次数,移出的位不仅要进入CF,而且还要填补空出的位,CF的内容为最后移入位的值。如图8-5所示,受影响的标志位:CF、OF。
图8-5 ROR
(3)带进位循环左移指令RCL
格式:RCL OPD 1或CL
描述:
把目的操作数的低位向高位移CL规定的次数,用原CF的值填补空出的位,移出的位进入CF。如图8-6所示,受影响的标志位:CF、OF。
图8-6 RCL
(4)带进位循环右移指令RCR
格式:RCR OPD 1或CL
描述:
把目的操作数的高位向低位移CL规定的次数,,移出的位不仅要进入CF,而且还要填补空出的位,如图8-7所示,受影响的标志位:CF、OF。
图8-7 RCR
四、实验内容与步骤
1、实验内容
(1)用A命令写程序片段,在寄存器AX中存入一个数,要求对其用移位命令进行乘8,除4的操作。
(2)编写程序片段,实现如下的计算A=10*B,要求用到移位命令,不用乘法计算。
(3)编写指令序列把由DX和AX组成的32位二进制数进行算术左移。
2、实验步骤
(1)预习移位命令的基本知识,熟悉这些命令的基本操作,根据实验内容,整理编程思路;
(2)利用在DEBUG调试中的A命令输入对应程序片段;
(3)对写好的程序片段,利用DEBUG的T、P命令或G命令查看数据区,核对实验结果。
五、思考与练习
1.执行以下命令,观察AX是否有变化:(1)SAL AX, 1
SAR AX, 1
(2)SAR AX, 1
SAL AX, 1
2.移位指令如何影响标志位CF、OF?