assembly - 如何在8086汇编中更改或设置背景颜色?

标签 assembly operating-system kernel x86-16 bootloader

我正在学习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's Interrupt ListINT 10h 是视频例程的通用 BIOS 中断。可以在 here 找到 INT 10h 例程的完整列表。 。我使用过BIOS例程INT 10h/AH=06其记录为:

VIDEO - SCROLL UP WINDOW

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

关于assembly - 如何在8086汇编中更改或设置背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36090659/

相关文章:

linux - 如果iowait现在是99%,CPU还能执行其他进程吗

shell - 为什么shell使用0作为成功?

c - 关于Android内核的几个问题

assembly - 影子寄存器——arm

assembly - 软件在什么阶段转换为实际的硬件信号?

assembly - 为什么 Rust 编译器不能优化掉 Box::downcast 的错误部分?

operating-system - 启用 GRUB 从内核自动引导

linux - RT 修补的 Linux 内核的循环测试

Linux内核调度实现

c++ - 如何优化非线性方程组的解?