1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 汇编移位指令SHR SAR SAL/SHL ROR ROL RCR RCL

汇编移位指令SHR SAR SAL/SHL ROR ROL RCR RCL

时间:2018-08-27 12:40:44

相关推荐

汇编移位指令SHR SAR SAL/SHL ROR ROL RCR RCL

目录

逻辑右移SHR

算数右移SAR(重点)

算数/逻辑左移SAL/SHL(完成的操作都一样)

循环右移ROR

循环左移ROL

带进位循环右移RCR

带进位循环左移RCL

总结

例题

移位指令为双操作数指令,用于将目的的操作数中的二进制数移位。

目的操作数只能是寄存器或内存

源操作数为移位的次数,只能是CL寄存器或者立即数1

移动完,CL的值不变

逻辑右移SHR

shift right

无符号数除以2

MOV AL,10SHR AL,1;0000 1010(10);移动后;0000 0101;(5) CF=0 SHR是对于无符号数,开头直接补0即可

算数右移SAR(重点)

完成了带符号数除以2

shift arithmetic right

MOV AL,80H;(-128)SAR AL,1;1000 0000;移动后;1100 0000 (-64) ;补的是符号位,最低位移入CF,CF=0

算数/逻辑左移SAL/SHL(完成的操作都一样)

SAL和SHL指令是一条机器指令的两种汇编指令表示

完成的是×2的操作不论是有符号还是无符号数

MOV AL,08HSHL AL,1;0000 1000;左移后;0001 0000; 末尾补0,最高位移入CF,CF=0

MOV AL,0FFH(-1)SHL AL,1;1111 1111;移动后;1111 1110(-2)末尾补零,最高位移入CF=1

循环右移ROR

Rotate Right

循环左移ROL

Rotate left

带进位循环右移RCR

rotate carry right

这时候CF很重要,先把原来CF的值移入最高位,在把最低位的值移出给CF

带进位循环左移RCL

rotate carry left

总结

移出的位都去CF

移位次数>1,次数必须放CL

SHL AL,4;错误;正确MOV CL,4SHL AL,CL

例题

MOV CL,04

SHL DX,CL

MOV BL,AH

SHL AX,CL

SHR BL,CL

OR DL,BL

该程序段的功能是(DX和AX组合形成的32位数左移4位);若DX为1234H,AX为5678H,则程序运行后AX=(6780H)

执行下面程序后,AX=(60)

MOV AL,6

MOV AH,0

SAL AX,1

MOV BL,AX

SAL AL,1

SAL AL,1

ADD AX,BX

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。