匯編源程序代碼:提高乘法運(yùn)算123×236的計(jì)算速度(取自王爽老師《匯編語(yǔ)言》問(wèn)題5.3)
如何提高 123×236 的計(jì)算速度?書(shū)中的方法是,將 123×236 的乘數(shù)和被乘數(shù)顛倒。
其實(shí)還有更快的方法,代碼如下:
assume cs:code
code segment
mov cx,3000h
mov ss,cx
mov sp,0
mov cx,1000h
mov ds,cx
mov cx,123
mov bx,0
mov [bx],cx
u:
mov ax,236
mov dx,2
s:
mov bx,0
mov cx,[bx]
sub cx,dx
mov bx,2
mov [bx],cx
mov bx,0
mov cx,[bx]
mov bx,cx
mov cx,2
add ax,ax
add dx,dx
sub bx,dx
add cl,bh
loop s
push ax
mov bx,2
mov cx,[bx]
sub cl,ch
mov ch,0
mov bx,0
mov [bx],cx
inc cx
loop u
mov dx,0
v: pop ax
add dx,ax
mov cx,sp
inc cx
loop v
mov ax,0
mov bx,2
mov cx,[bx]
mov bx,ax
t: sub dx,ax
mov ax,236
add bx,1
add cx,bx
loop t
mov cx,2000h
mov ds,cx
mov bx,2? ??
mov [bx],dx
mov ax,4c00h
int 21h
code ends
end
說(shuō)明:由于程序末尾將 236×123 的計(jì)算最終結(jié)果保存到內(nèi)存單元 [2000:0002] 中,因此在執(zhí)行 q5_3.exe 前應(yīng)先用 Debug 查看該內(nèi)存空間所存儲(chǔ)的數(shù)據(jù)內(nèi)容,以便與運(yùn)行可執(zhí)行文件后的結(jié)果進(jìn)行對(duì)比(運(yùn)行可執(zhí)行文件后,再次用?Debug?查看同一內(nèi)存空間存儲(chǔ)的數(shù)據(jù)內(nèi)容),由此驗(yàn)證程序運(yùn)行的結(jié)果。
通過(guò)將被乘數(shù) 123 換成一個(gè)偶數(shù),例如 122,即計(jì)算 236×122,可更好地驗(yàn)證程序代碼編寫(xiě)是否正確。