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

PuHM4L5nJY.gif

1.jpg