Я хочу, чтобы кто-нибудь объяснил мне что-то, пожалуйста: поэтому я пытаюсь следовать какой-то книге, чтобы написать свою первую супер простую ОС. Я написал код, который печатает строку "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, это работает отлично, я пробовал разные коды для печати строки, но ничего не получалосьза исключением символьной печати. Кто-нибудь знает, что может быть причиной такого поведения? Я действительно смущен, и мне бы очень хотелось понять, что происходит. Спасибо.