MASM x86 添加两个整数



我正在编写一个简单的程序,它从用户那里获取 3 个整数并执行以下数学运算:

  • 前 2 个数字的总和
  • 第二个和第三个数字的区别
  • 所有三个数字的乘积
  • 商(整数)以及第一个和第三个数字的余数

应该向用户输出显示计算。例如,如果用户输入 10、9 和 8,则应在第一次计算时显示:

10 + 9 = 19

我现在正在尝试做总和。我能够计算它,但我似乎无意中覆盖了number_1,number_2相加后等于总和,所以我的输出是:

19 + 19 = 19

谁能帮助我解决我在这里做错了什么?这是我做组装的第一周,所以如果答案非常明显或其他什么,我很抱歉......

; Sum of first two numbers
mov     eax, number_1
mov     ebx, number_2
add     eax, ebx
mov     sum, eax
; Print results
mov     edx, OFFSET number_1
call    WriteDec
mov     edx, OFFSET op_plus
call    WriteString
mov     edx, OFFSET number_2
call    WriteDec
mov     edx, OFFSET op_equ
call    WriteString
mov     edx, OFFSET sum
call    WriteDec

编辑:问题似乎在于教科书作者的WriteDec例程,该例程在我们的教授让我们包含和使用的图书馆中。

由于库的 WriteDec 例程似乎只从 EAX 中提取,因此在每次尝试写入数字之前都需要额外的行。

mov eax, (variable-name)
move edx, OFFSET (variable-name)

这已经解决了这个问题。

最新更新