我今天進行了測試,我唯一不了解的問題是將雙字轉(zhuǎn)換為四字。這讓我開始思考,為什么/何時為擴展或除法簽名?另外,什么時候使用cdq等說明?
3 回答

搖曳的薔薇
TA貢獻1793條經(jīng)驗 獲得超6個贊
我總是在匯編中混為一談,因為我對寄存器感到困惑。我認為股息總是放在eax / ax中,而一個操作數(shù)的指令只是div / idiv ebx(或其他寄存器)。這將有效地執(zhí)行eax / ebx,商在eax中,余數(shù)在edx中。我的考試顯示,在調(diào)用包含71的EAX上的idiv和包含-4的另一個寄存器之前,我們使用了cdq。為什么是這樣?我們使用了每個寄存器的全部,我不明白為什么我們需要其中一個成為四字。

四季花海
TA貢獻1811條經(jīng)驗 獲得超5個贊
請閱讀答案的第一行和/或英特爾的insn參考手冊。 idiv ebx
做eax = (edx:eax)/ebx
和eax = (edx:eax)%ebx
。edx
始終是股息的高半部分,而顯式操作數(shù)始終是除數(shù)。沒有div
/ 形式idiv
會忽略edx
2和3操作數(shù)形式imul
僅產(chǎn)生單寄存器結(jié)果的方式。
- 3 回答
- 0 關(guān)注
- 591 瀏覽
添加回答
舉報
0/150
提交
取消