中小型网站建设与管理,仙桃企业网站建设,徐州建站网页建设,模板网在线制作上机实验05 移位操作编程实验 一、实验要求和目的 1#xff0e;了解汇编语言移位操作指令#xff1b;
2#xff0e;熟悉汇编语言逻辑移位指令的使用方法#xff1b;
3#xff0e;掌握利用汇编语言逻辑移位运算指令实现程序设计的方法。
二、软硬件环境 1#xff0e…上机实验05 移位操作编程实验 一、实验要求和目的 1了解汇编语言移位操作指令
2熟悉汇编语言逻辑移位指令的使用方法
3掌握利用汇编语言逻辑移位运算指令实现程序设计的方法。
二、软硬件环境 1硬件环境微机CPU 486以上500MB以上硬盘32M以上内存 2软件环境装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。 三、实验涉及的主要知识单元
移位指令主要包括算术移位、逻辑移位、循环移位以下分三类介绍。其中统一的语句格式为 操作符 OPD1 操作符 OPDCL
功能为将目的操作数的所有位按操作符规定的方式移动1位或按寄存器CL规定的次数0~255移动结果送入目的地址。
1、算术移位 1算术左移指令SAL 格式SAL OPD 1或CL 描述 将OPD向左移动CL指定的次数最低位补入相应的的内容为最后移入位的值。如图3-3所示受影响的标志位CF、OF、PF、SF和ZF(AF无定义)。 图3-3 SAL
算术右移指令SAR 格式SAR OPD 1或CL 描述 将OPD向右移动CL指定的次数且最高位保持不变CF的内容为最后移入位的值。如图3-4所示受影响的标志位CF、OF、PF、SF和ZF(AF无定义)。 图3-4 SAR
2、逻辑移位
1逻辑左移
格式SHL OPD 1或CL
描述
把目的操作数的低位向高位移CL规定的次数空出的低位补0的内容为最后移入位的值。与算术左移相同如图3-3所示受影响的标志位CF、OF、PF、SF和ZF(AF无定义)。
2逻辑右移 格式SHR OPD 1或CL
描述
把目的操作数的高位向低位移CL规定的次数空出的高位补0的内容为最后移入位的值。 如图3-5所示受影响的标志位CF、OF、PF、SF和ZF(AF无定义)。 图3-5 SHR
3、循环移位 循环移位包括不带进位的循环移位指令ROL、ROR和带进位的循环移位指令RCL、RCR。
1不带进位循环左移指令ROL 格式ROL OPD 1或CL
描述
把目的操作数的低位向高位移CL规定的次数移出的位不仅要进入CF而且还要填补空出的位的内容为最后移入位的值。如图3-6所示受影响的标志位CF、OF。 图3-6 ROL
2不带进位循环右移指令ROR 格式ROR OPD 1或CL
描述
把目的操作数的高位向低位移CL规定的次数移出的位不仅要进入CF而且还要填补空出的位的内容为最后移入位的值。如图3-7所示受影响的标志位CF、OF。 图3-7 ROR
3带进位循环左移指令RCL
格式RCL OPD 1或CL
描述
把目的操作数的低位向高位移CL规定的次数用原CF的值填补空出的位移出的位进入CF。如图3-8所示受影响的标志位CF、OF。 图3-8 RCL
3带进位循环右移指令RCR
格式RCR OPD 1或CL
描述 把目的操作数的高位向低位移CL规定的次数移出的位不仅要进入CF而且还要填补空出的位如图3-9所示受影响的标志位CF、OF。 图3-9 RCR 四、实验内容与步骤 1、实验内容
1用A命令写程序片段在寄存器AX中存入一个数要求对其用移位命令进行乘8除4的操作。 编写程序片段实现如下的计算A10*B要求用到移位命令不用乘法计算。 编写指令序列把由DX和AX组成的32位二进制数进行算术左移。 2、实验步骤
1预习移位命令的基本知识熟悉这些命令的基本操作根据实验内容整理编程思路
2利用在DEBUG调试中的A命令输入对应程序片段
3对写好的程序片段利用DEBUG的T、P命令或G命令查看数据区核对实验结果。
五、实验要求与提示
1、实验要求 1根据实验内容写出分析思路 2对写出的程序片段加上适量注释 3回答思考问题
4记录实验结果。 2、实验提示
1移位运算中左移一位相当于乘2操作右移一位相当于除2操作 对寄存器AX赋值为4然后先执行左移1位操作再执行右移1位操作用P命令观察寄存器AX的变化如图3-10所示。 图3-10
2算术移位适合于有符号数的运算逻辑移位适用于无符号数的运算。 332位的移位注意CF的变化。
4运算下面程序并观察各寄存器和标志位的值变化情况。
;****************************************************************
STACK SEGMENT PARA STACK DB 20 DUP(?)
STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK
START: MOV AX,0CBA5H MOV CX,0CH
LOOP1: SAL AX,1 ;算术左移 LOOP LOOP1 MOV AX,0CBA5H MOV CX,0CH
LOOP2: SAR AX,1 ;算术右移 LOOP LOOP2 MOV AX,0CBA5H MOV CX,0CH
LOOP3: SHL AX,1 ;逻辑左移 LOOP LOOP3 MOV AX,0CBA5H MOV CX,0CH
LOOP4: SHR AX,1 ;逻辑右移 LOOP LOOP4 MOV AX,0CBA5H MOV CX,0CH
LOOP5: ROL AX,1 ;不带进位的循环左移 LOOP LOOP5 MOV AX,0CBA5H MOV CX,0CH
LOOP6: ROR AX,1 ;不带进位的循环右移 LOOP LOOP6 MOV AX,0CBA5H MOV CX,0CH
LOOP7: RCL AX,1 ;带进位的循环左移 LOOP LOOP7 MOV AX,0CBA5H MOV CX,0CH
LOOP8: RCR AX,1 ;带进位的循环右移 LOOP LOOP8 MOV AH,4CH ;返回DOS INT 21H
CODE ENDS END START
;************************************************************************ 3、编程设在数据段中定义有三个变量X,Y,Z,请利用算术移位指令编写程序“sy05_1.asm”计算出下式的值假设乘积的结果只有低16位有效 Z10*(XY)
掌握和熟悉以上的各移位操作指令并把调试好的程序sy05_1.asm 提交。 代码
DATA SEGMENT
X DW 0520H
Y DW 0521H
Z DW 2 DUP(?)
DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA MOV DS,AX MOV AX,X MOV BX,Y ADD AX,BX MOV CX,AX MOV CL,3 SHL AX,CL SHL CX,1 ADD AX,CX MOV Z,AX MOV DX,Z
CODE ENDS END START
六、思考与练习以及测评标准
1执行以下命令观察AX是否有变化
1SAL AX, 1 SAR AX, 1 2SAR AX, 1 SAL AX, 1 2移位指令如何影响标志位CF、OF