经典汇编语言教程:5.2.5 移位操作指令

5.2.5 移位操作指令

移位操作指令是一组经常使用的指令,它包括算术移位逻辑移位双精度移位循环移位带进位的循环移位等五大类。

移位指令都有指定移动二进制位数的操作数,该操作数可以是立即数或CL的值。在8086中,该立即数只能为1,但在其后的CPU中,该立即数可以是1··31之内的数。

1、算术移位指令

算术移位指令有:算术左移SAL(ShiftAlgebraic Left)和算术右移SAR(ShiftAlgebraic Right)。它们的指令格式如下:

SAL/SAR Reg/Mem, CL/Imm

受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。

算术移位指令的功能描述如下,具体功能下图(a)、(b)所示。

◆算术左移SAL把目的操作数的低位向高位移,空出的低位补0;
◆算术右移SAR把目的操作数的高位向低位移,空出的高位用最高位(符号位)填补。

(a)、SAL(b)、SAR

例5.10 已知(AH)=12H,(BL)=0A9H,试给出分别用算术左移和右移指令移动1位后,寄存器AH和BL的内容。

解:用算术左移和右移指令移动1位后,寄存器AH和BL的结果如下表所示。

操作数的初值

执行的指令

执行后操作数的内容

(AH)=12H

SAL  AH, 1

(AH)=24H

(BL)=0A9H

SAL  BL, 1

(BL)=52H

(AH)=12H

SAR  AH, 1

(AH)=09H

(BL)=0A9H

SAR  BL, 1

(BL)=0D4H

下面是学习和理解算术移位指令的控件。它简单、直观地表达了该移位指令的功能,通过它,学习者可准确地掌握计算机系统中该移位指令的含义。

在该控件中,操作者可随机生成第一操作数,也可自行输入之。为了便于比较,在执行指令前,把原操作数的内容存入“操作前的数据”中。

思考题:下面有两组指令序列,问每组指令执行后,寄存器AX的不会变化吗?

SAL AX, 1
SAR AX,1 

SAR AX, 1
SAL AX, 1

上一课 下页:下一课

经典汇编语言教程·相关目录

第1章 汇编语言的由来,数据类型第2章 CPU资源和存储器
第3章 操作数的寻址方式第4章 标识符和表达式
第5章 微机CPU的指令系统第6章 程序的基本结构
第7章 子程序和库第8章 输入输出和中断
第9章 宏第10章 应用程序设计
第11章 数值运算协处理器第12章 汇编语言和C语言
汇编语言重要附录Windows API函数大全
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号