使用int 0x10和ax = 0x07在16位实模式汇编中更改文本颜色/颜色

时间:2014-04-20 13:56:43

标签: assembly operating-system bios 16-bit real-mode

我注意到在0x07中使用0x07(滚动/清除屏幕)功能时,屏幕颜色属性(以bh为单位)。我注意到help color列出了所有这些颜色,所以我将最初的0x07(黑底白字)更改为0x0a(黑底绿色),但它没有按预期运行,屏幕在黑色时保持白色。我觉得我需要改变显示模式,但我不确定如何做到这一点。

clearScreen:
    pusha

    mov ax, 0x07    ; function to scroll window
    mov bh, 0x0a    ; Does not work
    mov cx, 0x0000  ; row = 0, column = 0
    mov dx, 0x184f  ; row = 24 (0x18), column = 79 (0x4f)
    int 0x10        ; call the BIOS interrupt

    popa
    ret

感谢。

1 个答案:

答案 0 :(得分:1)

mov ax, 0x07应为mov ax, 0x0700,因为功能编号属于AH,而AL中的行数属于mov bh, 0xa0。另请注意,屏幕将保持黑色,因为黑色的绿色空间仍为黑色。但是,光标将变为绿色。您可以尝试使用绿色黑色来获得某些效果,即。 {{1}}。