汇编语言中的“移位指令”具体的 *** 作是什么?

汇编语言中的“移位指令”具体的 *** 作是什么?,第1张

SHL/SAL一样:逻辑/算术左移,最御瞎高位进到CF,最低位补0;

SHR:逻辑右移,最低位进到CF,最高位补0;

SAR:算术右移,最低位进到CF,最高位不变;

ROL:循环左移,最高位进到CF的同时补到最低位;

ROR:循环右移,最低位进到CF的同时补到最高位;

RCL:带进位循环左移,最高位进到CF的,同时CF值补到最低位;

RCR:带进位循环右移,最低位进到CF的,同时蚂念CF值补到最高位;

SHLD:双精度左移,第二个 *** 作数移位到第一个 *** 作数,第一 *** 作数进到CF,和逻辑左移类似,低位镇物空移到高位;

SHRD:双精度左移,第二个 *** 作数移位到第一个 *** 作数,第一 *** 作数进到CF,和逻辑由移类似,高位移到低位;

这样差不多可以了吧。

8种位移指令中只有:RCL和RCR影响CF,以RCL为例:

MOV

A,01H

MOV

CL,08H

RCL

A,CL

则运行后CF为1.

----------------------

----------------------

继续回答:

不是"在RCL或RCR指令后,最高位放入CF";RCL是带进位左循环移位指令,RCR是带进位右循环移位指令;RCL是将某数最高位移进入CF,而CF里的内容跑到该数的最低位,形成咬尾蛇循环,移位次数为CL或CX指定的次数斗乎;世郑而RCR相反,它是从最低位移出到CF,CF跑空返悉到最高位,形成咬尾蛇循环。这两个指令是9或17个位在参与移位 *** 作,而其他移位指令只是8位或16位(以8086/8088指令为解释基础,不同的CPU机型移位指令的位数可能不同)

扩展分 符号扩展和零扩展,

一,零扩展指令 MOVZX ,示例:

MOVZX CX,BL

说明枯晌告 :注意BL是8位的,CX是16位的,将BL复制到CL,再将CH的内容没明用0填充,这就是零扩展.

二,符号扩展指令MOVSX ,示例:

MOVSX CX,BL

说明:同样的将BL复制到CL,但是这次填充CH的内容不是零,而是BL的最高位,例如

BL=10010001,那么就将8个"1"填充到CH.

移位指令的作用,我也不清楚耶,具体要用时就知道了吧.但是一楼说的,我不谨逗大认同,现在的cpu有特殊的电路,乘法指令一个时钟周期就ok了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12500210.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存