В настоящее время я работаю над созданием простой ОС с нуля, поэтому я тестирую код загрузочного сектора и моделирую его с помощью Qemu.
Мой код загрузочного сектора должен печатать «A» при загрузке ОС.
Вот первая версия кода загрузочного сектора (без использования вызова функции)
[org 0x7c00]
mov al,'A'
mov ah,0x0e ; int 10/ ah = 0eh -> scrolling teletype BIOS routine
int 0x10
jmp $
times 510 -( $ - $$ ) db 0
dw 0xaa55
после выполнения бинарного файла, созданного nasm с помощью:
qemu-system-i386 test.bin
результат правильный, и символ «А» появляется там, где он должен быть
но после попытки использовать функцию, которая печатает символ, хранящийся в al, на экране ничего не печатается.
вот вторая версия файла test.asm (на этот раз включая вызов функции)
[org 0x7c00]
mov al,'A'
call my_print_function
jmp $
times 510 -( $ - $$ ) db 0
dw 0xaa55
my_print_function:
pusha ; push all registers
; same code as the first version to print a character stored in al
mov ah,0x0e
int 0x10
popa ; pop all registers
ret
так почему он не работает правильно?
Любая помощь будет принята с благодарностью.
Спасибо
times
... - person Frank Kotler   schedule 20.04.2013