移位指令 移位指令 移位指令-简介,移位指令-详述

移位指令所属现代词,指的是一组经常使用的指令,属于汇编语言逻辑指令中的一部分。

移位操作_移位指令 -简介

移位指令

移位操作指令是一组经常使用的指令,属于汇编语言逻辑指令中的一部分,它包括移位指令(含算术移位指令、逻辑移位指令),循环移位指令(含带进位的循环移位指令),双精度移位指令三大类。其功能为将目的操作数的所有位按操作符规定的方式移动1位或按寄存器CL规定的次数(0~255)移动,结果送入目的地址。目的操作数是8位(或16位)的寄存器数据或存储器数据。

下面将逐一详述。所用到的名词均为汇编语言中一般常用符号。若不懂可暂且当做一个普通名字来理解。

移位操作_移位指令 -详述

说明

一般格式 移位操作符(如SHR) OPR,CNT.

其中OPR用除立即数外的任何寻址方式。移位次数由CNT决定,在8086中可以是1或CL,CNT为1时只移一位;如果需要移位的次数大于1时,需要先将移位次数存入CL寄存器中,而移位指令中的CNT写为CL即可。在其他机型中可使用CL和CNT,且CNT的值除可用1外,还可以用8位立即数指定范围从1到31的移位次数。有关OPR和CNT的规定适用于以下所有指令操作。具体格式如下所述。以逻辑右移为例。

如:MOV AX,62H

SHR AX,1

当移位数大于1时,需要先将移位数放进CL中然后再进行移位操作。

如:MOV AL,62H

MOV CL,4

MOV AL,CL

条件标志位

CF(进位标志) = 移入的数值

1 CNT=1时,最高有效位的值发生变化

0 CNT=1时,最高有效位的值不变

移位指令:

SF(符号标志)、ZF(零标志)、PF (奇偶标志)根据移位结果设置,AF(辅助进位标志)无定义

循环移位指令:

不影响 SF、ZF、PF、AF

条件标志位应用于具体的操作数中使用,以下叙述中未详细写明,初学者可不予理会。

算术指令

SAL(shift arithmetic left) 算术左移

格式:SAL OPR,CNT

含义: 算术左移SAL把目的操作数的低位向高位移,空出的低位补0.

(指将要移位的操作数换成二进制表示方法,如62H为01100010B.移位时只是寻常理解中的将这些二进制位逐个向左或向右移,移走的数根据操作符决定舍弃或者放入空出的位置,空出的位置根据操作符决定补0或者放入移走的数)。

SAR(shift arithmetic right) 算术右移

格式:SAR OPR,CNT

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

如62H二进制表示法为01100010B,最高位为0,无论右移多少位左边都用0补上。如果最高位是1,则都用1补上。

注:算术移位指令常用于带符号数*2或/2,受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。

逻辑指令

逻辑左移SHL(Shift Logical Left)和逻辑右移SHR(Shift Logical Right)

格式:SHL(或SHR) OPR,CNT

逻辑左移/右移指令只有它们的移位方向不同,移位后空出的位都补0。

注:逻辑移位指令常用于无符号数*2或/2,受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)。

循环移位指令

循环左移ROL(rotateLeft)和循环右移ROR(Rotate Right)。

格式:ROL(或ROR) OPR,CNT

循环左移/右移指令只是移位方向不同,它们移出的位不仅要进入CF,而且还要填补空出的位。可以理解为蛇咬尾巴型循环。

带进位的循环左移RCL(Rotate Left Through Carry)和带进位的循环右移RCR(Rotate Right)。

格式:RCL(或RCR)OPR, CNT

带进位的循环左移/右移指令只有移位的方向不同,它们都用原CF的值填补空出的位,移出的位再进入CF。

注:受影响的标志位:CF和OF。

以上算术,循环和逻辑移位指令均可以作字或字节的操作,386及其后继机型还可作双字操作。

移位指令 移位指令 移位指令-简介,移位指令-详述
双精度移位指令

386及其后继机型可使用本组指令

SHLD(shift left double) 双精度左移和SHRD(shift right double) 双精度右移

格式:SHLD(或SHRD)DST,REG,CNT

这组指令可以取两个字作移位操作而得到一个字的结果,也可以取两个双字作移位操作而得到一个双字的结果。在移位中,作为源操作数的寄存器提供移位值,以补目的操作数因移位引起的空缺,而指令执行完成后,只取目的操作数作为移位的结果,源操作数寄存器则保持指令执行前的值不变。

这是一组三操作数指令,其中DST可以用除立即数以外的任一种寻址方式指定字或双字操作数。源操作数则只能使用寄存器方式指定与目的操作数想同长度的字或双字。第三个操作数CNT用来指定移位次数,它可以是一个8位的立即数,也可以是CL,用其内容存放移位计数值。移位计数值的范围为1到31,对于大于31的数,机器则自动取模32的值来取代。

如:SHLD EBX,ECX,16

指令执行前:(EBX)=12345678H, (ECX)=13572468H,

指令执行后:(EBX)=56781357H,(ECX)=13572468H,CF=0.

  

爱华网本文地址 » http://www.413yy.cn/a/8103530103/126553.html

更多阅读

诺基亚手机解锁密码指令大全 诺基亚手机怎么解锁

诺基亚手机解锁密码指令大全初始保密码:12345?5110锁码机解码:在保密码锁死,输入正确保密码无效的情况下,可1、按C键不放,2、按*键不放,3、按*键不放,4、输入04*PIN*PIN*PIN# 解除锁码。?3210解 SP 锁: 1、按C键 2、按向下键 3、按C键直到

指令引用的内存不能为read如何解决 指令引用不能为read

指令引用的内存不能为read如何解决——简介内存指令不能read或written,这是在电脑使用中经常出现的问题,内存是主板上的存储部件,是CPU直接与之沟通,并用其存放当前正在使用的(即执行中)的数据和命令的重要部件。当你用键盘或鼠标输入某

魔术教学之人头移位 人头移位魔术教学

非常高兴你能够看到今天的魔术教学,人头移位魔术非常简单,效果却很是惊人,希望我的解读能够帮你快速学会这个魔术。首先,你要准备两样东西,第一是一件宽松的大衣,第二是一个铁架子(如图)如果没有的话也可以用衣架改装。将铁架

简单的硬币魔术教程——移位的硬币 简单硬币魔术教学

简单的硬币魔术教程——移位的硬币——简介简单的硬币魔术教程——移位的硬币简单的硬币魔术教程——移位的硬币——工具/原料一元硬币四枚简单的硬币魔术教程——移位的硬币——方法/步骤简单的硬币魔术教程——移位的硬币 1、双

交易开拓者代码学习各种买卖指令及实例TB

各种买卖指令Buy说明产生一个多头建仓操作。语法Buy(NumericShare=0,Numeric Price=0,Bool Delay=False)参数Share买入数量,为整型值,默认为使用系统设置参数;Price买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);Delay买入动

声明:《移位指令 移位指令 移位指令-简介,移位指令-详述》为网友嗝是迷路的屁分享!如侵犯到您的合法权益请联系我们删除