您好,我正在用汇编程序制作一个以 10 为基数的计算器,它可以采用最大长度为 5 dig 的数字...所以在输入后有两个数字,例如,五个 dig 数字之一存储在 ax 和 bl 中
AX - 23 45
BX - 00 01
所以输入的值是12345
另一个是例如 is23243
并且它存储在第一个数字上CX
并且DX
与第一个数字的想法相同(存储在AX
和BX
...)现在,我已经制作了加法代码,但我不能弄清楚如何用所有否定问题制作减法代码......
所以我想做的是,例如,取 bh (我没有使用,因为数字不能超过 6 digs...)如果数字是负数,我就放 1,如果它是正数,我'将输入 0 以解决此问题,现在的问题是我不知道如何使代码像所有sub
部分、进位和所有东西一样工作......(此外,我使用了诸如 adc、daa 之类的命令。 ..)
最后一个示例:值为:12345 及其正数
AX - 23 45
BX - 00 01
(if Bh is 0 the number is positive if 1 its negative...)
现在值为:23243 及其正值 CX - 32 43 DX - 00 02
计算 12345-23243(= -10898)
假设答案是 CX 和 DX,所以它看起来像这样:
CX - 08 98
DX - 01 01
答案:(-10898)
有人可以帮我/给我一个我会知道怎么做的示例代码吗?
对不起,如果我有点困惑......
谢谢。编辑:这是您要求的附加代码:
proc Add_two_numbers;2 values useing stack...
pop [150]
pop dx
pop cx
pop bx
pop ax
add al,cl
daa
mov cl,al
mov al,ah
adc al,ch
daa
mov ch,al
mov al,bl
adc al,dl
daa
mov dl,al
push cx
push dx
push [150]
ret
endp Add_two_numbers
第二次编辑:我知道如何使它成为负数,所以我只需要小于 2 的算法,它不需要处理像 1000-2000 这样的数字 请让它只对像 2000-1000 这样的正值起作用