Я следую за 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
Во второй строке Он загружается биос на 7C00 в дискете. почему не на 0000? Я проверил на Where to store the bootloader on a floppy image?. Вот и то же самое. Но причина не объяснила. Может ли кто-нибудь объяснить это мне, пожалуйста? Заранее спасибо.
EDIT: Я получаю смущен, потому что в том же месте в более позднем учебнике коды являются:
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 копирует загрузчик * в * адрес 0x7C00 в память. – AndreKR
Вопрос отредактирован. Пожалуйста, проверьте. – narayanpatra