.intel_syntax noprefix
.include "console.i"
.data
ask1: .long 0
ask2: .long 0
ans : .long 0
.text
ask: .asciz "Enter number: "
ans1: .asciz "multiplication= "
_entry:
Prompt ask
GetInt ask1
Prompt ask
GetInt ask2
mov eax, ask1
mov edx, ask2
mul edx
mov ans,edx
Prompt ans1
PutInt ans
PutEol
ret
.global _entry
.end
OUTPUT:
Enter number: 2
Enter number: 4
multiplication= 0
In above code it gives output as 0.
why it is showing 0 instead of 8 ?
edit1: added mov ans, edx
答案 0 :(得分:1)
您将edx乘以eax,因此您的结果存储在eax中,而不是edx。
您的代码:
mul edx
mov ans,edx
您要将edx的值分配给ans。你应该将eax的值存储在ans中。
mul edx
mov ans,eax
答案 1 :(得分:0)
你使用了很多我不理解的宏,但基本的问题似乎是你没有对'mul edx'的结果做任何事情。
MUL EDX的结果是在edx:eax中,你似乎把这些信息扔掉而不把它放在变量ans中。