怎样用汇编语言实现将(DX)(AX)中的双字逻辑左移一位

如题所述

逻辑左移=算数左移,右边统一添0
逻辑右移,左边统一添0
算数右移,左边添加的数和符号有关
e.g:1010101010,其中[]位是添加的数字
逻辑左移一位:010101010[0]
算数左移一位:010101010[0]
逻辑右移一位:[0]101010101
算数右移一位:[1]101010101
所以对于双字就是
SHL AX,1最高位移入CF
RCL DX,1带进位逻辑左移CF移入DX最低位
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-11
程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code,ES:Code
; 把32位逻数 3F65C9232H 逻辑左移2位 结果存在DX;AX中
Start: mov dx,3F65h
mov ax,C923h
shl ax,1
rcl dx,1
shl ax,1
rcl dx,1
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
第2个回答  2011-03-11
向左移位,也可以乘以2、乘以4。。。
七条移位指令,花样较多,理解起来,远远不如加法指令简单。
左移一位,使用加法指令,实现乘以2,就是最简单的。
ADD AX, AX
ADC DX, DX
完。
第3个回答  2011-03-11
程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code,ES:Code
; 把32位逻数 3F65C9232H 逻辑左移2位 结果存在DX;AX中
Start: mov dx,3F65h
mov ax,C923h
shl ax,1
rcl dx,1
shl ax,1
rcl dx,1
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束

怎样用汇编语言实现将(DX)(AX)中的双字逻辑左移一位
shl ax,1 ;将ax左移1位,这时候最高位移到CF中 rcl dx,1 ;将dx带进位循环左移一位,将CF(存放的是刚才ax的最高位)移到dx最低位上,同时dx所有位左移1位,dx最高位移到CF中。rcl是把操作数的最高位移入CF,而CF中原有内容移入操作数的最低位 ...

将DX、AX作为整体,逻辑左移一位的具体操作,用汇编语言编写,写具体些...
shl ax,1 ;将ax左移1位,这时候最高位移到CF中 rcl dx,1 ;将dx带进位循环左移一位,将CF(存放的是刚才ax的最高位)移到dx最低位上,同时dx所有位左移1位,dx最高位移到CF中。rcl是把操作数的最高位移入CF,而CF中原有内容移入操作数的最低位 ...

汇编语言逻辑左移
因为ROL是循环左移指令,所以左移出来的最高位会移入最低位和CF因为AX = 0428H0428H = 0000 0100 0010 1000H左移两位后,变成了0001 0000 1010 0000 = 10A0H楼主,到了这里,你可以这么做,因为是循环左移,所以左移掉的位数,直接接到二进制串的后面就行了例如这道题(00)00 0100 0010 1000,我们把它的前两...

DX和AX为一个整体移位怎么移???
SHL AX ;AX左移一位并且最高位移到C中 RCL DX ;DX带C循环左移一位,即DX低15位左移一位,C到DX最低位,右移一位是:SHR DX RCR AX

DX和AX为一个整体移位怎么移???
shld dx,ax,cl ;cl为移动位数 shl ax,cl 3、双精度移位指令 此组指令有:双精度左移SHLD(Shift Left Double)和双精度右移SHRD(Shift Right Double)。它们都是具有三个操作数的指令,其指令的格式如下:SHLD\/SHRD Reg\/Mem, Reg, CL\/Imm;80386+ 其中:第一操作数是一个16位\/32位的寄存器...

用汇编语言求DX:AX双字的个数
你的意思是在求乘法时,两个十六位的相乘,然后高位放到DX中,地位放到AX中,然后求他们的值吗

汇编语言 、 有一无符号64位二进制数存放在DX、CX、BX、AX中
算法,对此无符号数逻辑左移两位,相当于乘4.处理时只要把低字的最高位移到高字的最低位就好。因此采用带进位的循环移位指令可做到这点。比如,当执行shl ax,1时,ax的最高位移到cf了,接着执行rcl bx,1,则cf移到了bx的最低位,其最位又移到cf了,相似的道理cx、dx可按此方法进行。因此...

利用汇编语言写代码怎样实现循环左移如图的功能。急
OR AX,CX ;使原DX高4位成为AX低4位 ;;;SHL DX,4 ;DX左移4位,低4位自动补0 OR DX,BX ;使原AX高4位成为DX低4位 ;;;INT 3 CODES ENDS END START ;;;以上汇编程序编译链接生成exe文件在Win7的DOS环境运行通过,;;程序运行结果:DX=6781H, AX=2345H ...

二进制到十进制转换(汇编语言)我看不明白
左移1位相当*2: 是shl指令 例如:mvo al,6 shl al,1 结果: al=0c --- 右移1位相当\/2: 是shr指令 例如:mov al,6 shr al,1 结果:al=3 --- 指令ror: 循环右移 例如:mov al,10011100 ror al,1 结果: al=01001110 --- 指令rol: 循环左移 例如:mov al,10011100 ror al,1 结果...

汇编语言求 AX 结果
MOV AX,1234H MOV CL,4 ;指明移位次数为4 ROL AX,CL ;移位后,AX=2341H DEC AX ;AX减一,最终AX=2340H MOV CX,4 MUL CX ;AX乘以CX,即2340H×4=8D00H 则(AX)=(8D00H)。

相似回答