Отображение текста без прерываний - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь сделать свой собственный загрузчик.Поскольку у меня не будет прерываний при переходе с 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

Я добавил комментарии в понятные мне строки.Что я не понимаю, так это использование видеопамяти.Может кто-нибудь объяснить мне это и показать, где найти документацию?

Я искал в Интернете, но не могу найти документацию.

1 Ответ

0 голосов
/ 04 октября 2018

Я думаю, что получил его сейчас.

mov cx, 4 - длина сообщения.«test» имеет длину четыре байта.

mov ah, 07h устанавливает данные цвета.0 = черный, 7 = светло-серый.
Первое число - это цвет фона, второе число - это цвет текста.
Это означает, что символ для печати будет светло-серым на черном фоне.

Спасибо всем, кто помог.

...