汇编源程序代码:提高乘法运算123×236的计算速度(取自王爽老师《汇编语言》问题5.3)
如何提高 123×236 的计算速度?书中的方法是,将 123×236 的乘数和被乘数颠倒。
其实还有更快的方法,代码如下:
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
说明:由于程序末尾将 236×123 的计算最终结果保存到内存单元 [2000:0002] 中,因此在执行 q5_3.exe 前应先用 Debug 查看该内存空间所存储的数据内容,以便与运行可执行文件后的结果进行对比(运行可执行文件后,再次用 Debug 查看同一内存空间存储的数据内容),由此验证程序运行的结果。
通过将被乘数 123 换成一个偶数,例如 122,即计算 236×122,可更好地验证程序代码编写是否正确。