x86匯編語言:從實模式到保護模式書籍第191頁gdt_base+0x7c00為什么是0x7e00,而不是0x7e00+0x7c00,
gdt_base的線性地址是gdt_base dd 0x00007e00 ;轉換成邏輯地址應該是0x0000:0x7e00,謝謝。
uj5u.com熱心網友回復:
沒看過這本書,不過從7c00這個值來看這部分代碼應該是引導扇區吧?
理論上說此時的GDT base應該是0,加上7c00就是引導代碼在記憶體中的首地址了
uj5u.com熱心網友回復:
原書代碼是不是這么寫的:
...
mov ax,[cs:gdt_base+0x7c00]
...
gdt_base dd 0x00007e00
...
完整的陳述句要加個中括號,那此處[...:gdt_base+...]就不是代表“0x7e00”這個值,而是存盤這個值的偏移地址。
這個偏移地址再加上“主引導程式的實際加載位置是邏輯地址 0x0000:0x7c00 即:[cs: ... +0x7c00] 這一部分,cs=0x0000”。
兩地址相加得到的新地址套上中括號,就是存盤在此新地址內的值:0x7e00
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/127593.html
標籤:匯編語言
上一篇:手機上安裝python編輯器
