Я изучаю серию brokenthorn для разработки операционных систем , чтобы узнать о загрузчике. В этой странице это три строки кода:
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? Я проверил на Где хранить загрузчик на образе дискеты? .
Вот и то же самое дало. Но причина не объяснила. Кто-нибудь может объяснить это мне, пожалуйста? Заранее спасибо.
РЕДАКТИРОВАТЬ: я запутался, потому что в том же сайте в следующем уроке коды:
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? И зачем тогда он скопировал адрес во все регистры?
Извините, если это глупый вопрос. Я очень плохо знаком с программированием на ассемблере и только начал читать о загрузчиках.