Я очень новичок в MASM и сборке, и я пишу свою первую программу. Мне трудно понять, как добавить две переменные вместе и вывести результат. Вот часть моей программы до сих пор:Как добавить две десятичные переменные в MASM x86 и вывести сумму
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. Я еще новичок в этом так если это простой ответ, извините, ха-ха. Что я делаю не так?
Я не знаю irvine, но 'mov secondNum, ebx' не может быть правильным, если' mov firstNum, eax' был. Если «ReadInt» возвращает значение read в EAX, второй ход должен быть «mov secondNum, eax» – Tommylee2k
Спасибо, я был смущен, потому что думал, что если бы я переместил secondNum в eax, он заменил бы первую переменную. Я все еще не совсем уверен, как работают эти регистры. Это сработало после того, как я сделал то, что сказал! – Conman97
«mov» работает наоборот. если вы пишете «mov variable, eax», тогда содержимое eax перемещается в эту память, а не FROM там ;-) Очевидно, что «ReadInt» перенастраивает значение в EAX после сохранения этого значения в firstNum, EAX может быть снова использован снова – Tommylee2k