有人可以用签名和无符号表示法帮助我用汇编语言解决这个问题吗?
我的任务是计算以下术语的结果:
itertools.takewhile
其中(a*a+b)/(b+b)+c
是单词,a
是一个字节,b
是双字
我试过了:
c
答案 0 :(得分:1)
mov ax, a ; AX = a
mul a ; AX = a*a
错误评论:此mul
的结果位于DX:AX
add ax, 2 ; AX = a*a + 2
我不认为您应该立即添加 b !
mov bl, b ; BX = b
add bl, b ; BX = b*b
错误的评论:这是一个补充。
div bl ; a*a+b/b+b
你最好通过在div bx
之前将BH寄存器归零来使其成为字分频。还有你的评论中的括号哪里?
mov ax, word ptr c+2
mov dx, word ptr c
add ax, word ptr c
在这里,你做错了。 新词划分的结果将在AX中。因此,将 c 的低位字添加到AX,并将 c 的高位字加到空的DX寄存器中。
mov word ptr x+2, dx
mov word ptr x, ax
似乎没问。