MASM x86添加两个整数

时间:2014-04-08 01:43:56

标签: x86 masm

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

  • 前两个数字的总和
  • 第二个和第三个数字的差异
  • 所有三个数字的产品
  • 商数(整数)和第一个和第三个数字的余数

应该向用户显示计算结果。例如,如果用户输入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例程,该例程存在于我们的教授已经包含和使用的库中。

1 个答案:

答案 0 :(得分:0)

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

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

这解决了这个问题。