簡體   English   中英

匯編中的 MUL 操作

[英]MUL operation in assembly

我有以下裝配線:

...
MOV ECX, 0x36EE80
MOV EDX, 0x95217CB1
MUL EDX
SHR EDX, 0x15
MOV DWORD PTR SS:[EBP-0x3C8], EDX
....
....

因此,在http://en.wikibooks.org/wiki/X86_Assembly/Arithmetic 中,我讀到 MUL 的操作數(在這種情況下為 EDX)的值與 EAX 中的值相乘。 因此,在 EAX 中,我的值為 0330FD3B(十進制:53542203)。 在 EDX 中,我的值為 95217CB1(十進制:2501999793)。 但是在 MUL 操作之后,我在 EDX 中的值為 01DBEE41(十進制:31190593)。 但這肯定是錯誤的,因為 53542203 * 2501999793 不是 31190593 ...

有人可以向我解釋這個嗎?

MUL r/m32 的描述Unsigned multiply (EDX:EAX <- EAX * r/m32). .

這意味着64 位乘積將存儲在EDX:EAX ,即高 32 位以EDX結束,低 32 位以EAX 這與您看到的結果相符,因為產品應該是 0x1DBEE41EB22A9CB。

結果是01DBEE41 EB22A9CB ,EDX 存儲了其中的大部分。
在處理數字的二進制表示時,十進制數是不可連接的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM