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

时间:2016-03-18 17:25:58

标签: assembly operating-system kernel x86-16 bootloader

我正在学习8086汇编。我需要使用8086程序集更改屏幕的背景颜色。我看了几个教程,他们只能设置屏幕的一部分。我不希望通过DOS中断来执行此操作,而所有教程都在DOS中断。如果有人向我展示使用BIOS Interrupts设置屏幕的整个部分(背景颜色)的代码将会很好。

2 个答案:

答案 0 :(得分:5)

您可以使用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's Interrupt List INT 10h 是视频例程的常规BIOS中断。可以找到{em> INT 10h 例程的完整列表here。我使用了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

答案 1 :(得分:0)

这是蓝屏:

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

这是红色和白色。