我的代码存在一些问题,它使用了ReadInt,然后将其放入一个变量中,我调用它来做一些基本的数学运算。 程序的要点是要求5个数字,将前两个加在一起,减去第三个,然后将第四个和第五个加在一起,并给出输出。 但是我一直在某处发生错误,我不确定在哪里。 例如,如果我使用数字3,10,7,6,1答案应该是13,但是我的程序输出14,这使我相信它取7 + 6 + 1而不是3 + 10-7 + 6 1
.data
start BYTE "Please enter 5 numbers.", 0dh, 0ah,0
val1 DWORD ?
finish BYTE "The result of adding the first two numbers,subtracting the third", 0dh, 0ah, 0
finish2 BYTE " and adding the remaining two is ", 0dh, 0ah,0
msg BYTE 0dh,0ah,0
.code
main PROC
mov edx, OFFSET start
call WriteString
call ReadInt
mov val1,eax
call ReadInt
add eax, val1
mov val1, eax
call ReadInt
sub val1, eax
mov val1, eax
call ReadInt
add eax, val1
mov val1, eax
call ReadInt
add eax, val1
mov val1, eax
mov eax, val1
mov edx, OFFSET finish
call WriteString
mov edx, OFFSET finish2
call WriteString
mov edx, offset msg
call WriteString
invoke ExitProcess,0
main endp
end main
答案 0 :(得分:1)
call ReadInt
sub val1, eax
mov val1, eax <-- this is wrong
由于您直接从val1
中减去,因此您之后不应将eax
移至val1
(即应删除mov
指令)
现在发生的是你计算3 + 10 - 7 == 6.然后你用7覆盖val1
,然后继续加6和1给你一共14。