如何在 8086 程序集中更改或设置背景颜色



我正在学习8086汇编。我需要使用 8086 组件更改屏幕的背景颜色。我看过一些教程,他们只能设置屏幕的一部分。我不想通过DOS中断来做到这一点,而所有的教程都在DOS中断中。如果有人向我展示使用 BIOS 中断设置屏幕整个部分(背景颜色)的代码,那就太好了。

您可以使用 BIOS 功能更改所有屏幕的背景和前景色 06h

MOV AH, 06h    ; Scroll up function
XOR AL, AL     ; Clear entire screen
XOR CX, CX     ; Upper left corner CH=row, CL=column
MOV DX, 184FH  ; lower right corner DH=row, DL=column 
MOV BH, 1Eh    ; YellowOnBlue
INT 10H

这些数字适合 80x25 的文本视频模式。

IBM PC的BIOS和DOS中断的最佳信息来源之一是Ralf Brown的中断列表。INT 10h 是视频例程的通用 BIOS 中断。INT 10h 例程的完整列表可在此处找到。我使用了 BIOS 例程 INT 10h/AH=06,它记录为:

视频 - 向上滚动窗口

AH = 06h
AL = number of lines by which to scroll up (00h = clear entire window)
BH = attribute used to write blank lines at bottom of window
CH,CL = row,column of window's upper left corner
DH,DL = row,column of window's lower right corner
Return:
Nothing

这是蓝屏:

mov ah, 09h
mov cx, 1000h
mov al, 20h
mov bl, 17  ; This is Blue & White.

您可以将 17 更改为其他颜色数字;

  • 0 = 黑色
  • 1 = 蓝色
  • 2 = 绿色
  • 3 = 水绿色
  • 4 = 红色
  • 5 = 紫色
  • 6 = 黄色
  • 7 = 白色
  • 8 = 灰色,
  • 9 = 浅蓝色。

例:

mov bl, 47

这是Red & White。