所以这里的数字是
a = 234234
b = 2394729
c = 12323
a*b*c = 6912302836717278
但我得到了这样的结果:3945371358.我想我必须使用LONG,因为它超过了int的限制,但我不知道怎么做,因为在x86汇编中没有long,我必须改变什么?
我想我必须使用long,因为它是超过int的限制,但我不知道如何,因为在汇编x86没有long,我必须改变什么?先谢谢你
%include "io.inc"
section .bss
a resd 1
b resd 1
c resd 1
section .text
global CMAIN
CMAIN:
mov ebp, esp; for correct debugging
xor eax,eax
GET_UDEC 4,a
GET_UDEC 4,b
GET_UDEC 4,c
mov eax,dword[a]
mov ebx,dword[b]
imul ebx
mov ecx,dword[c]
imul ecx
PRINT_UDEC 4, eax
xor eax, eax
ret
在你的例子中,确实将两个最小的值相乘会得到一个32位的数字,但也仅仅是这样。你不能假设总是这样。所以你有两个选择。
rax
等,而不是32位 eax
.