如何在蓝屏​​上打印文本?

时间:2018-07-22 10:11:25

标签: assembly x86

我有一个问题。如何在蓝屏​​上打印文本?

start:
        mov ax, 07C0h
        add ax, 288
        mov ss, ax
        mov sp, 4096
        mov ax, 07C0h
        mov ds, ax
;-------------------------------------------------
        mov ah, 09h
        mov cx, 1000h
        mov al, 20h
        mov bl, 17h
        mov si, text_string
        int 10h
        jmp $
        text_string db 'This is my Operating System!', 0
print_string:
        mov ah, 0Eh
.repeat:
        lodsb
        cmp al, 0
        je .done
        int 10h
        jmp .repeat
.done:
        ret
        times 510-($-$$) db 0
        dw 0xAA55           

这是我的代码。我写了mov si, text_string,但没有用。请帮助我。

1 个答案:

答案 0 :(得分:1)

您的 print_string 例程使用BIOS电传打字功能将字符显示在屏幕上。不幸的是,在处理文本模式屏幕时,此功能不会以任何特定颜色输出。

由于您的目标是在蓝色屏幕上打印字符,因此请首先确保屏幕实际上是蓝色的。

        mov dx, 184Fh   ; lower right (79,24)
        xor cx, cx      ; upper left (0,0)
        mov bh, 1Fh     ; brightwhite on blue
        mov ax, 0600h   ; clear screen
        int 10h

此后,您可以call使用BIOS电传打字功能的 print_string 例程:

        mov  si, text_string
        call print_string
        jmp  $

        text_string db 'This is my Operating System!', 0

print_string:
        mov  ah, 0Eh
        jmp  .first
.print: int  10h
.first: lodsb
        test al, al
        jnz  .print
        ret