向显存写数据x8086
在内存的地址控件中,B8000H~BFFFFH这段32kb的空间是80x25的彩色字体显示缓冲区,向这个内存中写入数据,写入的内容会立即直接出现在显示器上
在80x25彩色字符模式下,显示器可以显示25行,每行25个字符,每个字符可以有256种属性
那么可以知道的是一个字符在显存中要存放2个一个,一个存放ascii码,一个存放这个字符的属性。
显示缓冲区分为8页,通常情况下显示第0页的内容。和显存中的内存对照后,也就是表示B8000H~B8F9H中的4000个字节的内容将显示在显示器上。
在一页的显示缓冲区中,采用对B800段地址的偏移地址来处理
在一页的显示缓冲区中,可以通过数组的样子来用类似与表格的样子来显示
偏移地址 | 对应显示的行数 |
---|---|
000~09F | 显示器的第一行(一行有80个字符,占160个字节 |
0A0~13F | 第二行 |
140-1DF | 第三行 |
以此类推
1 data segment 2 db "Maggie" 3 data ends 4 code segment 5 assume cs:code,ds:data 6 start: 7 mov dx,11001000B;显示的字体 8 mov ax,0b800H 9 mov ds,ax 10 11 mov ax,data 12 mov es,ax 13 14 mov bx,0 15 mov si,0 16 mov cx,6 17 loop1: 18 mov ax,es:[bx] 19 mov [bx],ax 20 inc si 21 mov [si],dx 22 inc si 23 inc dx 24 loop loop1 25 26 code ends 27 end start
在一行中,一个字符占了一个字的存储控件,地位地址存放字符的ASCII码,高位存放字符的属性
可以按位来设计属性字节,从而达到不同的背景和颜色
白色采用全为1黑色的话全为0就好
属性 | 属性字节 |
---|---|
红底绿字 | 01000001B |
红底闪烁绿字 | 11000001B |
红底高亮绿字 | 01001001B |
黑底白字 | 00000111B |
白底蓝字 | 01110001B |