在保护模式(又称为长模式)下,可以使用VGA控制器进行视频输出。以下是一个使用VGA控制器进行视频输出的示例代码:
section .data
vga_base equ 0xA0000 ; VGA 显存基地址
vga_width equ 320 ; VGA 显示宽度
vga_height equ 200 ; VGA 显示高度
section .text
global _start
_start:
; 设置视频模式
mov ax, 0x0013 ; 320x200 256色 VGA 模式
int 0x10 ; 调用BIOS中断设置视频模式
; 清空屏幕
xor di, di
mov cx, vga_width * vga_height
mov ax, 0x0000
rep stosw
; 在屏幕中央显示一个红色方块
mov di, (vga_width * (vga_height / 2)) + (vga_width / 2)
mov ax, 0x04C0 ; 红色
stosw
; 循环等待
jmp $
section .bss
resb vga_width * vga_height ; 为显存分配内存
上述代码使用BIOS中断来设置VGA模式为320x200,然后使用显存地址0xA0000来进行屏幕输出。代码通过将0x04C0(红色)的像素值存储到显存中央的位置来绘制一个红色方块。代码还使用了一个无限循环来让程序持续运行。
请注意,这个示例代码是使用汇编语言编写的,因为在保护模式下,直接操作硬件需要使用底层的汇编指令。如果你想使用高级语言来实现视频输出,你可以考虑使用相关的图形库或者操作系统提供的API。