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了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)