簡體   English   中英

組裝中的IDIV操作(了解)

[英]IDIV operation in assembly (understanding)

當我進行手術時

IDIV ecx

在匯編中,然后我已閱讀到edx:eax中的值除以操作數ecx。 我也知道商存儲在eax中,余數存儲在edx中。

所以edx:eax中的值到底是什么?

有人可以向我解釋嗎?

編輯:盡管我已經閱讀了一些有關此內容的頁面,但我也不理解總是在IDIV操作之前進行“ cdq”操作的原因。

我已經讀過edx:eax中的值除以操作數...但是edx:eax中的值到底是什么?

在此上下文中, EDX:EAX表示由寄存器EDXEAX形成的64位值,其中EDX被解釋為包含最高有效位,而EAX包含最低有效位。

CDQ轉換在雙字EAX到一個四字EDX:EAX通過符號擴展EAXEDX (即每個比特EDX填充的最顯著位EAX )。 例如,如果EAX包含0x7FFFFFFF ,則EDX 0 ,因為EAX的最高有效位已清除。 但是,如果您的EAX = 0x80000000則會得到EDX = 0xFFFFFFFF因為設置了EAX的最高有效位。
CDQ是在除以32位操作數之前設置EDX ,因為被除數為EDX:EAX

它是什么? 這是您放置在那里的價值,因為您想對其進行划分...

CDQ指令在EAX中采用32位值,並在EDX:EAX中將其轉換為64位值(通過將EAX的符號位復制到EDX的每一位中)。 如果(通常)要除以的值以32位開頭,則可以使用它。

暫無
暫無

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

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