MASM x86添加两个整数

MASM x86添加两个整数,x86,masm,X86,Masm,我正在编写一个简单的程序,从用户那里获取3个整数,并进行以下计算: 前两个数之和 第二和第三个数字之差 三个数的乘积 商(整数)和第一和第三个数字的余数 应向用户提供显示计算结果的输出。例如,如果用户输入10、9和8,则第一次计算时应显示: 10+9=19 我现在正在做算术题。我能够计算它,但我似乎无意中覆盖了数字_1和数字_2,使之等于相加后的总和,因此我的输出是: 19+19=19 谁能帮我解决我做错了什么?这是我做装配的第一周,所以我很抱歉,如果答案是非常明显的或什么 ; Sum of

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

  • 前两个数之和
  • 第二和第三个数字之差
  • 三个数的乘积
  • 商(整数)和第一和第三个数字的余数
应向用户提供显示计算结果的输出。例如,如果用户输入10、9和8,则第一次计算时应显示:

10+9=19

我现在正在做算术题。我能够计算它,但我似乎无意中覆盖了数字_1和数字_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例程似乎只从EAX中提取,因此每次尝试写入数字之前都需要额外的一行

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

这就解决了问题。

你在哪里声明
编号1\u副本
编号2\u副本
?我的错误是,我尝试了一些东西,但忘了删除该部分。它应该是“数字1”和“数字2”。编辑过的帖子。你能发布你的
WriteDec
例程吗?看起来它可能在
EAX
中发出值,而不是
EDX
所指向的值。只是猜测一下。你是对的,Mike W。在调用
WriteDec
之前添加一行
mov EAX,sum
,得到了正确的输出。这套套路是我的课本作者写的,我还没有看到,因为它在一个单独的图书馆里。我会和教授谈谈它为什么会这样。