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

时间:2017-01-23 07:47:44

标签: assembly x86 masm irvine32

我是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.我仍然是新的,所以如果它是一个简单的答案,我很抱歉哈哈。我做错了什么?

1 个答案:

答案 0 :(得分:1)

在大多数x86 ABI上,函数的返回值通常在var $search = $('#search'); var $imgs = $('img') $search.keyup(function(event) { var value = $search.val().toLowerCase(); $imgs.show(); if (value !== '') { $imgs.not('[title*="' + value + '"]').hide(); } }); 寄存器中,如果返回值是64位长,而不是32位,则高32位将在EAX注册。

您的指示:

EDX

没有从第二次调用call ReadInt mov secondNum, ebx 获取返回值,因为ReadInt中的不是;它在EBX

将其替换为EAX,因为这会将mov secondNum, eax的实际返回值转换为ReadInt