简单的装配数学计算

时间:2017-01-08 23:03:10

标签: math assembly

您好我正在尝试计算简单的数学函数(2c-a)/(c + ax)。但出于某种原因,我所有的答案都是0。 给定:a - b,b - w,c - w,x - w,y - b

MOV ax, 2
MUL c    ; dx:ax=2c
JC kl1  ; sandauga netilpo i ax
XCHG ax, dx
MOV al, a
XOR ah, ah
ADD dx, ax    ; c^2-a
JC kl1
MOV al, a
MUL x[si] ; a*x 
JC kl1  ; sandauga netilpo i ax
ADD bx, ax    ; ax+c
JC kl1
CMP al, 0
JE kl2    ; dalyba is 0
MOV ax, dx
XOR dx, dx
DIV bx    ; ax=rez
re:

感谢任何想法。

1 个答案:

答案 0 :(得分:0)

按照此示例进行操作,以便在出现错误时出现短问题 表达式=(2 * c-a)/(c + a * x)

mov ax,c;用变量c

加载ax

shl ax,1;多重播放c * 2

sub ax,a; 2c - a

mov parte1,ax;存储结果

mov ax,a;用变量a

加载ax

mov bx,x;用变量x

加载bx

mul bx; ax = a per x

添加ax,c; C +斧

mov parte2,ax;存储结果

推斧;保留最后一个calcolus表达式的第二个操作数

mov ax,parte1;使用作为第一个操作数的变量parte1加载ax 表达

pop bx;使用变量parte2加载bx,这是表达式的第二个操作数

div bx; risultato = parte1 / parte2 = ax:dx

ax = int part dx =休息

我希望能帮助你。