调用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

显示结果如图:

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
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
Last moify: 2024-12-23 07:55:59
Build time:2025-07-18 09:41:42
Powered By asphinx