调用BIOS的10H中断可以用来设置显示模式。
进入320x200 256色显示模式
mov ah,0
mov al,0x13
int 0x10
该显示模式在内存中的访问地址为0xA0000~0xAFFFF
若成功进入画面屏幕会显示为黑色(之前屏幕会有很多输出信息)
在屏幕上显示粉色
粉色的色号为0x56
mov ax,0xa000
mov ds,ax
mov ebx,0
mov ax,0x56
mov ecx,0xffff
show_Pink:
mov [ebx],ax
inc ebx
loop show_Pink
显示结果如图:

下面显示为线条形状:
mov ax,0xa000
mov ds,ax
mov ebx,0
mov ax,0x56
mov ecx,0x4000 ;0x4000=(0xffff+1)/4
pink_line:
mov [ebx],ax
add ebx,4
loop pink_line

总实现代码为:
;该文件参考Intel 64-ia-32手册。
;本代码为Intel386处理器而写,但可运行在 Pentium 4, Intel Xeon, P6 family, Pentium,和Intel486处理器上
%include "boot.macro"
section mbr vstart=LOADER_BASE ;LOADER_BASE=0x7c00
;设置栈顶
mov ax,LOADER_BASE
mov ss,ax
mov sp,0
;-----设置显示模式----------
;640x480 256色图形
mov ah,0
mov al,0x13
int 0x10
;设置ds为显示内存的段寄存器,a00000~affff
;ebx作为偏移地址
mov ax,0xa000
mov ds,ax
mov ebx,0
;显示粉色
mov ecx,0x4000
mov ax,0x56
pink_line:
mov [ebx],ax
add ebx,4
loop pink_line
hlt
times 510-($-$$) db 0
db 0x55,0xaa
线条看起来总是令人头晕,还是调成纯粉的比较好
总代码为:
;该文件参考Intel 64-ia-32手册。
;本代码为Intel386处理器而写,但可运行在 Pentium 4, Intel Xeon, P6 family, Pentium,和Intel486处理器上
;CPU复位后的默认地址为FFFF_FFF0H
%include "boot.macro"
section mbr vstart=LOADER_BASE
;设置栈顶
mov ax,LOADER_BASE
mov ss,ax
mov sp,0
;-----设置显示模式----------
;640x480 256色图形
mov ah,0
mov al,0x13
int 0x10
;设置ds为显示内存的段寄存器,a00000~affff
;ebx作为偏移地址
mov ax,DISPLAY_BASE ;DISPLAY_BASE=0xa000
mov ds,ax
mov ebx,0
;显示粉色
mov ax,0x56
mov ecx,0xffff
show_Pink:
mov [ebx],ax
inc ebx
loop show_Pink
hlt
times 510-($-$$) db 0
db 0x55,0xaa