• 向显存写数据x8086


    向显存写数据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
    View Code

     

    在一行中,一个字符占了一个字的存储控件,地位地址存放字符的ASCII码,高位存放字符的属性

     

    属性的编码格式:

    可以按位来设计属性字节,从而达到不同的背景和颜色

    白色采用全为1黑色的话全为0就好

    属性属性字节
    红底绿字 01000001B
    红底闪烁绿字 11000001B
    红底高亮绿字 01001001B
    黑底白字 00000111B
    白底蓝字 01110001B
  • 相关阅读:
    编写更好的CSS
    EntityFramework中支持BulkInsert扩展
    NoSql数据库使用
    jsoneditor显示Json data
    资源
    了解你的被测系统(why?)
    SQL SERVER开窗函数
    oracle中的exists 和not exists 用法详解(转)
    visualvm监控jvm及远程jvm监控方法(转)
    爆:中国互联网的那些黑色产业链(转)
  • 原文地址:https://www.cnblogs.com/beautiful7/p/14097499.html
Copyright © 2020-2023  润新知