Этап 1 загрузчик для печати строки - PullRequest
0 голосов
/ 04 октября 2019

Я хочу, чтобы кто-нибудь объяснил мне что-то, пожалуйста: поэтому я пытаюсь следовать какой-то книге, чтобы написать свою первую супер простую ОС. Я написал код, который печатает строку "hello world", используя int 0x10.

Мой код:

[Org 0x7c00]

Mov bx,hello_msg

Mov ah,0x0e


Loop: mov al,[bx]

      cmp al,0

      Je exit

      int 0x10

      Inc bx

      Jmp loop

exit:

  Jmp$

hello_msg db 'Hello world',0


times 510-($ - $$) db 0

dw 0xaa55

Итак, я скопировал содержимое полученного двоичного файла после использованияNASM, в загрузочный сектор флэш-памяти. При загрузке из флэш-памяти единственное, что произошло, это то, что курсор опустился в нижнюю часть экрана и напечатал один странный символ. Если я изменяю свой код, чтобы печатать приветственный символьный символ сообщения, загружая символ в al (младший байт регистра топора) и 0x0e в ah и int 0x10, это работает отлично, я пробовал разные коды для печати строки, но ничего не получалосьза исключением символьной печати. Кто-нибудь знает, что может быть причиной такого поведения? Я действительно смущен, и мне бы очень хотелось понять, что происходит. Спасибо.

...