楼主的做法是对,但我认为不是最好,原因有2点:
第一,不易于理解,第一次*2,第二次就是*4了,别人看了有可能不易于理解,我也看了好长时间才看懂(可能是我水平有限)
第二,程序没有通用性,如果是ax*1000,你会怎么办,如果按楼主的做法,估计要写好长,即使能写完,代码估计也不是我等之辈能看懂的了。
现在把我写的代码分享给大家,如果需要改进,忘大家跟帖,以便大家共进步:
assume cs:code
code segment
start:
mov ax,1234
mov bx,ax
mov cx,5 ;如果是ax*1000,cx改成500即可。
mov dx,0 ;dx清0,相当于一个累加器。
s:
mov ax,bx ;每执行一次loop,ax恢复原值
shl ax,1 ;ax*2
add dx,ax ;用dx累加ax*2的内容
loop s
mov ax,dx ;最终结果放入ax
mov ah,4ch
int 21h
code ends
end start |