BIOS int 10h печать мусора на QEMU
У меня проблема при написании программы сборки реального режима x86, которая запускается как загрузчик вQEMU, Я пытаюсь напечатать текст через прерывание BIOS 0x10. Мой код:
print:
pusha
.loop:
mov AL, [SI]
cmp AL, 0
je .end
call printChar
inc SI
jmp .loop
.end:
popa
ret
printChar:
pusha
mov AH, 0x0E
mov BH, 0
mov BL, 0x0F
int 0x10
popa
ret
я использую[ORG 0x7c00]
в качестве отправной точки. Я проверилprintChar маркировать и называть его с каким-то письмом вАлабама и работает нормально. Когда я пытаюсь загрузить адрес памяти для такого сообщения:
loadMsg db "Loading",0
mov SI, loadMessage
call print
Я получаю мусор как «U» в качестве вывода наQEMU эмулятор. Вчера я написал код, очень похожий на этот, и у меня нет проблем. В чем причина моей проблемы и как ее можно исправить?