Я пытаюсь сделать свой собственный загрузчик.Поскольку у меня не будет прерываний при переходе с 16-битного на 32-битный режим, я не смогу использовать int 10h
.
. Вот код, который у меня есть:
org 0x7c00 ; add to offsets
xor ax, ax ; make it zero
mov ds, ax ; ds=0
mov ss, ax ; stack starts at 0
cld
mov ax, 0xb800 ; Ax = address of video memory
mov es, ax
xor di, di
call print ; call thr print function
hang:
jmp hang ; constanly loop
print:
mov si, msg ; load msg into si
mov cx, 4
mov ah, 07h
printchar:
lodsb ; Hear we load a letter from si
stosw
loop printchar ; if not end of msg, go back to printchar
ret ; return
msg db 'test' ; msg = 'test'
times 510-($-$$) db 0 ; make sure file is 510 bytes in size
dw 0xaa55 ; write boot signiture
И скомпилировано с помощью nasm:
nasm -f bin bootloader.asm -o myos.hdd
Я добавил комментарии в понятные мне строки.Что я не понимаю, так это использование видеопамяти.Может кто-нибудь объяснить мне это и показать, где найти документацию?
Я искал в Интернете, но не могу найти документацию.