Как я могу напечатать текст в 16-битном режиме (графическом)? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь написать загрузочный сектор, который отображает маленькое сообщение при загрузке, но выполнение следующего в QEMU приводит к искаженному тексту, и любая строка, содержащая более 5 символов, вообще не отображается. вот код, который я собрал с NASM в необработанный .bin файл

[bits 16]
[org 0x7c00]
start:
        xor ax,ax
        mov ds,ax
        mov es,ax
        mov bx,0x8000

        mov ax,0x13
        int 0x10

        mov ah,02
        int 0x10

        mov ah,0x02
        mov bh,0x00
        mov dh,0x12
        mov dl,0x03
        int 0x10

        mov si , welcome
        welcome db "hello",13,0
        call RainbowPrint
RainbowPrint:
        mov bl,1
        mov ah, 0x0E
        .repeat_next_char:
                lodsb
                cmp al, 0
                je .done_print
                add bl,6
                int 0x10
                jmp .repeat_next_char

        .done_print:
                ret
times (510 - ($ - $$)) db 0x00
dw 0xAA55

РЕДАКТИРОВАТЬ: вот изображение, показывающее программу, запущенную в qemu

...