80x25彩色字符模式
80x25彩色字符模式显示缓冲区(以下简称为显示缓冲区)的结构:
内存地址中,B8000H~BFFFFH共32KB的空间,为80x25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现再显示器上。
在80x25彩色字符模式下,显示器可以显示25行,每行80个字符,每个字符可以又256种属性(背景色、前景色、闪烁、高亮等组合信息)。
这样,一个字符在显示缓冲区中就要占用2个字节,分别存放字符的ASCII码和属性。80x25模式下,一屏的内容在显示缓冲区中共占4000个字节。
显示缓冲区分为8页,每页4KB(约为4000B),显示器可以显示任意一页的内容。一般情况下,显示第0页的内容。也就是说通常情况下,B8000H~B8F9FH中的4000个字节的内容将会出现在显示器上。
下面是实际使用案例
assume cs:code ds:data ss:stack
data segment
; 0123456789ABCDEF
db 'welcome to masm!'
db 00000010B
db 00100100B
db 01110001B
db 11110000B
db 00000111B
db 00010111B
db 00110111B
db 01110111B
db 01100111B
db 01000111B
db 00100111B
data ends
stack segment stack
db 100 dup(0)
stack ends
code segment
start:
mov ax, data
mov ds, ax
mov bx, 0
mov ax, 0b800H
mov es, ax
mov si, 0
mov di, 0
mov bp, 0
mov cx, 10
total:
push cx
push si
push di
mov cx, 16
row:
mov al, ds:[di]
mov ah, ds:[16+bp]
mov es:[1344+bx+si], ax
inc di
add si, 2
loop row
inc bp
add bx, 160
pop di
pop si
pop cx
loop total
mov ax, 4c00h
int 21h
code ends
end start