实验八 移位操作实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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?

相关文档
最新文档