[英]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.