我写了这段代码来解决方程。它适用于加法和乘法,但对于减法,它没有给出正确的结果。
;to subtract
mov ax,00
mov bx,00
mov dx,00
mov cx,00
mov si,offset mulx
mov di,offset sumy
mov bx,offset subr
mov ax,word ptr [si]
cwd
sub ax,word ptr[di]
mov word ptr[bx],ax
add si,2
add di,2
add bx,2
mov dx,word ptr [si]
cwd
sub dx,word ptr[di]
mov word ptr[bx],dx
HLT
等式为:sum(X)*m - sum(y) / n
所有都是带符号的数字,x
是字节,y
是字,m
和n
也是字。问题是减法,我该如何解决?
答案 0 :(得分:1)
使用第二条CWD
指令,您甚至在使用它之前就会消除DX
的值。查看CWD
的内容。
你可能根本不应该使用CWD
。如果您要从另一个双字减去一个双字,请先将该字的两半加载到AX
和DX
,然后使用SBB
DX
减去<{1}}:
mov ax, word [si]
mov dx, word [si+2]
sub ax, word [di]
sbb dx, word [di+2]
mov word [bx], ax
mov word [bx+2], dx