编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串’welcome tomasm !' 编程所需的知识通过阅读、分析下面的材料获得。
80x25彩色字符模式显示缓冲区(以下简称为显示缓冲区)的结构:
内存地址空间中,B8000H}BFFFFH共32KB的空间,为80 X 25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上。
在80x25彩色字符模式下,显示器可以显示25行,每行80个字符,每个字符可以有256种属性(背景色、前景色、闪烁、高亮等组合信息)。
这样,一个字符在显示缓冲区中就要占两个字节,分别存放字符的ASCII码和属性。80x25模式下,一屏的内容在显示缓冲区中共占4000个字节。
显示缓冲区分为8页,每页4KB(}4000B),显示器可以显示任意一页的内容。一般情况下,显示第0页的内容。也就是说通常情况下,B8000H-B8F9FH中的4000个字节的内容将出现在显示器上。
显示缓冲区
全称80x25彩色字符模式显示缓冲区,在内存中b8000h~bffffh共32KB的空间为80x25彩色字符模式的显示缓冲区,这个内存地址中的数据会即时更新显示器上的内容。
在此模式下,显示器共显示25行,每行80个字符,每个字符256种属性,一个字符占两个字节,低位存ASCII码,高位存属性。一屏的内容为4000字节,显示缓冲区分为8页,通常情况下显示器显示第0页的内容(b8000h~b8f9fh),第一行的内容为(b8000~b809fh),第二行为(b80a0h~B813FH),一行160字节,以此类推
assume cs:code, ds:data data segment output db 'welcome to masm!$' data ends code segment start: mov ax, data mov es, ax mov ax, 0b800h mov ds, ax mov cx, 16 mov si, 0 mov di, 0 s1: mov al, es:output[si] mov dl, 11000010b ;字符属性 mov ds:[700+di], al mov ds:[700+di+1], dl add di, 2 inc si loop s1 mov cx, 16 mov si, 0 mov di, 0 s2: mov al, es:output[si] mov dl, 11000001b ;字符属性 mov ds:[860+di], al mov ds:[860+di+1], dl add di, 2 inc si loop s2 mov cx, 16 mov si, 0 mov di, 0 s3: mov al, es:output[si] mov dl, 10010010b ;字符属性 mov ds:[1020+di], al mov ds:[1020+di+1], dl add di, 2 inc si loop s3 mov ax, 4c00h int 21h code ends end start