我跟隨brokenthorn operating development series來學習引導程序。在this page,是三個行的代碼:關於引導程序的問題
bits 16 ; We are still in 16 bit Real Mode
org 0x7c00 ; We are loaded by BIOS at 0x7C00
start: jmp loader ; jump over OEM block
在第二行他軟盤加載BIOS的7c00。爲什麼不在0000?我檢查了Where to store the bootloader on a floppy image?。 這裏也給出了同樣的事情。但原因沒有解釋。有人可以向我解釋這個嗎?提前致謝。
編輯:我感到困惑,因爲在同一個站點在以後的教程中的代碼是:
bits 16 ; we are in 16 bit real mode
org 0 ; we will set regisers later
start: jmp main ; jump to start of bootloader
,然後在主
main:
;----------------------------------------------------
; code located at 0000:7C00, adjust segment registers
;----------------------------------------------------
cli ; disable interrupts
mov ax, 0x07C0 ; setup registers to point to our segment
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
現在,這裏爲什麼他用組織0?那麼他爲什麼將地址複製到所有寄存器? 對不起,這是一個愚蠢的問題。我對彙編編程非常陌生,剛開始閱讀有關引導加載程序。
順便說一句,從你的措辭來看,你不清楚你是否理解:BIOS將bootloader *複製到內存中的0x7C00地址。 – AndreKR 2010-11-09 15:46:17
已編輯的問題。好心檢查。 – narayanpatra 2010-11-09 16:33:47