日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

汇编操作显存

發布時間:2025/6/15 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编操作显存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
導讀:
  新一篇: VGA顯示卡圖形模式訪問(提示版) (1)
  最近閑來無聊,找了本80x86的匯編教程學習學習。在對顯存直接操作的時候,發現書上說的很不清楚,
  還沒有說清楚呢,就開始例子了。(感覺像我們蹩腳的英語老師,說虛擬語氣會說到不定式)所以,下面我
  就來說一個簡單的使用例子。希望各位能對各位有所啟發。
   首先,看一下圖形控制器,它的端口是3CEH只要對這個端口傳送參數,我們就可以將圖形控制器9個寄存
  器中的一個設置為當前操作的寄存器。然后通過3CFH傳送參數給你剛才選擇的寄存器。
   其次,我所說的操作是對于VGA的12H模式也就是640480 16色。
   最后,我所用的匯編器是NASM,大家可以到www.sf.net上找到。
  ##################################################
   寄存器的索引如下
  寄存器名稱 索引
  置位/重置寄存器 0
  允許置位/重置寄存器 1
  顏色比較寄存器 2
  數據循環/功能寄存器 3
  讀映像選擇寄存器 4
  模式選擇寄存器 5
  雜用 6
  顏色無關寄存器 7
  位屏蔽寄存器 8
  
  
  關于寄存器的具體功能,在這里不做介紹。大家可以看看《IBM-PC匯編語言程序設計》第二版的10.3。
  關于讀模式,我看了看《IBM-PC匯編語言程序設計》上面說的還比較清楚。我在這里簡單介紹一下寫模式
  。
  通過對3CFH端口進行數據傳送,可以對所選寄存器操作。
  ###################################################
   寫模式的種類
  寫模式有4種,其中0模式為默認模式,模式2是模式0的簡化版本。模式3是VGA獨有的。感覺和模式0差不
  多。模式1是對位面的直接操作。
  ###################################################
   操作過程
  0 將屏幕設置為 12H 模式
  1 通過端口對寄存器進行設置
  2 對段地址為0a000h的內存進行寫操作。
  ###################################################
   簡單的例子
  ---------------------------------------------------
  文件:test.asm
  介紹:一個簡單的對VGA寫的例子。
  現象:在屏幕上出現綠黑相間的豎直條紋。
  語言:匯編語言,使用nasm匯編器
  作者:北斗星君
  郵箱:huangxiangkui@163.com
  ---------------------------------------------------
  通過BIOS設置VGA模式
  mov ah,00h
  mov al,12h
  int 10h
  以下對VGA控制器設置
  將VGA控制器,設置為寫模式2
  mov dx,3ceh
  mov al,5
  out dx,al ;選擇 模式選擇寄存器 為當前可用寄存器
  mov dx,3cfh
  mov al,2
  out dx,al ;將模式2設為當前寫模式
  對位屏蔽寄存器設置,使傳送給0a000h的八個象素中設位1的象素為有效。
  mov dx,3ceh
  mov al,8
  out dx,al ;選擇 位屏蔽寄存器 為當前可用寄存器
  mov dx,3cfh
  mov al,11110000b ;讓八個象素前四個有效,后四個無效
  out dx,al
  對0a000h地址進行操作
  設置初始參數
  mov ax,0a000h ;段地址
  mov es,ax
  mov bx,00000h ;起始偏移
  mov al,0ah ;綠色
  mov cx,0ffffh ;循環次數
  對內存循環操作寫入
  jmp re
  re:
  mov [es:bx],al
  inc bx
  loop re
  上面是一個簡單的寫入程序,我這里注釋的應該相當清楚了。如果有什么問題,我非常歡迎來大家探討。
  上面的代碼用nasm編譯通過。由于Win32下不能操作BIOS中斷。所以,我加了些代碼讓它在Bochs下運行。
  一切正常。
  如果有任何問題,可以詢問。
  
   STUDIO軟件開發組(SDT)
  STUDIO Development Team

  北斗星君(黃庠魁)
  

本文轉自

http://blog.csdn.net/VisionCat/archive/2005/01/12/250431.aspx



【0】README

0.1)本文轉自: http://www.cnblogs.com/youxin/archive/2012/05/21/2512329.html
for relative source code , please visit https://github.com/pacosonTang/Orange-s-OS/blob/master/lib.inc


【1】關于 80*25彩色字符模式顯示緩沖區(以下簡稱顯示緩沖區)結構的總結:

1.1)顯存介紹

  • 1)顯示緩沖區地址空間:b8000h~bffffh,共32k 空間;
  • 2)顯示緩沖區分為8個頁,每頁4k;
  • 3)每頁25行,每行160B;
  • 4)每行80個字符,每個字符占兩個字節,分別存儲字符本身的ascii 和 屬性值(背景色,前景色);
  • 5) 一般情況下,顯示第0頁的內容,也就是說通常情況下,b8000h~b8f9fh中的4000個字節的內容將出現在顯示器上。

1.2)在一頁顯示緩沖區中:

  • 偏移000~09f 對應顯示器上的第一行(80個字符占160個字節)
  • 偏移0a0~13f對應顯示器上的第二行
  • 依此類推,可以知道,偏移f00~f9f對應顯示器上的第25行

【3】對于一個字符占2個字節的總結:

3.1)低位字節存儲字符的ascii,高位存儲字符的屬性(一行共有80個字符,占160個字節),如:

  • 00~01 單元對應顯示器上的第1列;
  • 02~03 單元對應顯示器上的第2列;
  • 04~05 單元對應顯示器上的第3列;

3.2)關于前景色和背景色屬性設置:

  • 7  6  5  4  3  2  1  0
  • BL7閃爍 rgb背景(654)I(高亮3)  rgb(前景色 210)
  • 可以按位設置屬性字節,從而配出各種不同的前景色和背景色。

總結

以上是生活随笔為你收集整理的汇编操作显存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。