我有一个问题。如何在蓝屏上打印文本?
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
,但没有用。请帮助我。
答案 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