显示模式入门

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