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 эмулятор. Вчера я написал код, очень похожий на этот, и у меня нет проблем. В чем причина моей проблемы и как ее можно исправить?

Ответы на вопрос(2)

Ваш ответ на вопрос