[英]multiplying 3 numbers in assembly x86
所以這里是數字
a = 234234
b = 2394729
c = 12323
a*b*c = 6912302836717278
但我得到了這個結果:3945371358。
我想我必須使用 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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.