如何在MASM x86中添加两个十进制变量并输出总和



我对MASM和汇编非常陌生,我正在编写我的第一个程序。我很难弄清楚如何将两个变量相加并输出结果。到目前为止,这是我程序的一部分:

INCLUDE Irvine32.inc
.data
firstNum   DWORD   ?
secondNum  DWORD   ?   
sum        DWORD   ?       
.code
main PROC
;Get Data
call      ReadInt
mov       firstNum, eax
call      ReadInt
mov       secondNum, ebx
;Calculate Sum
mov       eax, firstNum
mov       ebx, secondNum
add       eax, ebx
mov       sum, eax
;Display Results 
mov       eax, sum
call      WriteDec

当我运行这个代码时,它会输出一些长数字"333420163",而不是总和应该是7。我对这个还很陌生,所以如果这是一个简单的答案,我很抱歉哈哈。我做错了什么?

在大多数x86 ABI上,函数的返回值通常在EAX寄存器中,在返回值为64位而不是32位的情况下,高32位将在EDX寄存器中。

您的说明:

call      ReadInt
mov       secondNum, ebx

没有从对ReadInt的第二次调用中获取返回值,因为它在EBX中是而不是;它在EAX中。

将其替换为mov secondNum, eax,因为这将把ReadInt的实际返回值放入secondNum

最新更新