作者uorol (′‧ω‧‵)
看板ASM
標題Re: [討論] 關於除法DIV的一些問題
時間Tue Mar 24 18:33:14 2015
內文吃掉
: --
:
※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 118.166.218.13
: → buganini:被除數是EDX:EAX 你是不是寫成EBX:EAX了? 01/09 02:2
: → buganini:或著是EDX沒清掉? 01/09 02:2
: → buganini:應該是EDX沒清.. 01/09 02:3
: → tna612:感謝樓上的解答>< 我在DIV之前加了一個"MOV EDX,0"之後 01/09 13:4
: → tna612:程式就能順利執行了^ ^ 謝謝~ 01/09 13:4
小弟最近在追的code裡面有用到inline assembly in C
所以開始學習ASM要怎麼看
中間遇到了buganini大大所說的EDX沒被清掉的問題
我手動去置換掉 EDX的值, 發現EAX跟EDX的值都會跑掉
EDX 看起來是會加上原本 EDX 的值,
例如我取 123 % 5
正常的case:
EAX = 20, EDX = 3.
設定EDX = 0x1, 會得到:
EAX = 858993483
EDX = 4
設定EDX = 0x2, 會得到:
EAX = 1717986943
EDX = 0
請問中間運作的原理要到哪邊查詢才能知道呢 @@"
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.122.2
※ 文章網址: https://webptt.com/m.aspx?n=bbs/ASM/M.1427193197.A.0BA.html
※ 編輯: uorol (210.61.122.2), 03/24/2015 18:33:39
※ 編輯: uorol (210.61.122.2), 03/24/2015 18:34:36
1F:推 suhorng: 查 Intel IA32 instruction manual... XD 03/25 17:29
2F:→ suhorng: 實際上 EDX:EAX 是 64-bit 被除數 算完有餘跟商 03/25 17:30
3F:→ mshockwave: 推一樓 有時候intel寫得比課本清楚XDD 03/30 07:46