为什么背景颜色没有变化

时间:2020-06-12 08:56:52

标签: assembly x86-16 bios

clear_screen proc NEAR
    mov ah, 00h ;set config to video mode
    mov al, 13h ;choose video mode
    int 10h ; start config

    mov ah, 0Bh ;set config to background color
    mov bh, 00h ;same
    mov bl, 0Ch ;light red as background color
    int 10h ; start config

    ret
clear_screen ENDP

这是我为组装中的乒乓球游戏清除屏幕的过程,并且没有将背景颜色更改为浅红色。 请帮助

1 个答案:

答案 0 :(得分:2)

对于文本模式; “ int 0x10,ah = 0x0B,bh = 0x00”功能仅设置边框颜色(而不是背景颜色)。对于现代计算机,帧缓冲区的内容会填满整个屏幕,因此您看不到任何边框颜色,并且看起来该函数没有执行任何操作。

要设置背景(在清除屏幕时),您至少有两个选择:

  • 使用“ int 0x10,ah = 0x06”将整个屏幕向上滚动25行,其中bh将包含您想要的任何属性(前景和背景颜色)。

    < / li>
  • 无需BIOS即可自行完成(只需完成rep stoswrep stosd即可完成此操作)。这可能比使用BIOS更快。