汇编语言怎么让三十二位逻辑左移?

汇编语言怎么让三十二位逻辑左移?十六位能懂 32位怎么解决
是用8086的汇编语言 位移32位的
如果是位移16位也就不问了 直接RAL AX CX 也就行了 可是32位的怎么弄呢?

用带进位的左移,就是RCL
左移时把操作数的最高位移入CF,而CF中原有内容移入操作数的最低位
先用RCL移低位的,再用RCL移高位的就好了,给你弄个注释吧:
假设用AX和DX存放这个32位的数据,AX是高位
AX=1111000011110000B DX=1100110011001100B

ADD AX,0;CF清零,不然左移的时候最低位可能会是1
RCL DX,1
;执行后DX=1001100110011000B
;CF里的0移到最低位,最高位的1再移到CF里,其他位顺序左移
RCL AX,1
;执行后AX=1110000111100001B
;原来DX的最高位移出来的1又通过CF移到了AX的最低位
;这样就实现32位的移位了
===================================================================
RCL的详细使用方法:
带进位的循环左移 RCL (rotate left through carry)

指令的汇编格式:RCL dst,cnt
指令的基本功能:RCL 对由dst指定的寄存器或存储器操作数,连同进位标志CF左循环移动,m所指定的次数,每左移一次,把操作数的最高位移入CF,而CF中原有内容移入操作数的最低位。
指定支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值。
OF=1 当cnt=1时,移动后最高位的值未发生变化。
OF=0 当cnt=1时,移动后最高位的值发生变化。
SF、ZF、PF标志位不受影响。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-12-23

第2个回答  2019-02-13
因为rol是循环左移指令,所以左移出来的最高位会移入最低位和cf
因为ax
=
0428h
0428h
=
0000
0100
0010
1000h
左移两位后,变成了0001
0000
1010
0000
=
10a0h
楼主,到了这里,你可以这么做,因为是循环左移,所以左移掉的位数,直接接到二进制串的后面就行了
例如这道题(00)00
0100
0010
1000,我们把它的前两位去掉,然后接到后面
0001
0000
1010
00(00)
ps:若有不明白的地方,可以追问
第3个回答  2009-03-22
在原来16位寄存器助记符前边加字母E即可. 例如 SL AX (适用于16位CPU8088/86) SL EAX (用于32位CPU80286/386/486/586)
第4个回答  2009-03-23
用shl 指令,
32位的移位指令还有很多
比如:shr逻辑右移
sal算术左移
sar算术右移
rol循环左移
ror循环右移
rcl带进位的循环左移
rcr带进位的循环右移
shld双精度的左移
shrd双精度右移
建议你去看看《intel汇编语言程序设计》的第四章
这本书有电子版的,你可以到IT实验室去下