《30天自制操作系統(tǒng)》筆記(11)——高分辨率.docx_第1頁
《30天自制操作系統(tǒng)》筆記(11)——高分辨率.docx_第2頁
《30天自制操作系統(tǒng)》筆記(11)——高分辨率.docx_第3頁
《30天自制操作系統(tǒng)》筆記(11)——高分辨率.docx_第4頁
《30天自制操作系統(tǒng)》筆記(11)——高分辨率.docx_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

30天自制操作系統(tǒng)筆記(11)高分辨率進度回顧上一篇介紹了定時器的初始化和使用方法。接下來就該實現(xiàn)多任務了。不過原作者在這之前寫了關于提高分辨率的章節(jié),本篇也總結(jié)一下設置顯示器高分辨率的方法好了。本篇內(nèi)容過于簡單,算是小小的休息一下。啟用高分辨率的思路:檢測顯卡是否支持某種分辨率;如果支持,則通過INT 0x10指令啟用之;否則使用任意顯卡都支持的低分辨率。VBE歷史上秦始皇掃平中原一統(tǒng)六國,其歷史功績之一便是在這之后統(tǒng)一了度量衡,從此全國人民在計算度量買賣的時候都有統(tǒng)一的標準了。秦始皇能夠強制廢除六國的貨幣、度量標準,但是顯卡公司里沒有一個能夠成為秦始皇,也就造成了設置顯示器分辨率的各種麻煩。然而天下大勢分久必合,顯卡公司雖然無法合并為一,但市場不接受各自為政的混亂標準,因此多家顯卡公司協(xié)商成立了VBE(Video Electronics Standards Association)即視頻電子標準協(xié)會。VBE制作了專用的BIOS,基本上可以兼容所有的顯卡分辨率設置。這個BIOS就稱為VESA BIOS extension(VBE)??梢哉fVBE就是顯卡公司之間統(tǒng)一的度量衡?;氐巾敳?go to top)設置低分辨率設置320*200這樣的低分辨率時,使用AH=0; AL=畫面模式號碼;INT 0x10;就行了?;氐巾敳?go to top)設置高分辨率設置640*480等高分辨率時,要使用AX=0x4f02;BX=畫面模式號碼;INT 0x10;。VBE的畫面模式號如下。 0x101640*480*8bit彩色 0x103800*600*8bit彩色 0x1051024*768*8bit彩色 0x1071280*1024*8bit彩色還有一些其它的模式,原作者省略了,我也就懶得知道了。另外,QEMU中不能使用0x107。原因不明。實際使用的時候,要把畫面模式號加上0x4000,再賦值到BX中。首先要判斷計算機使用的是什么顯卡。如果不能使用VBE,就只能用低分辨率了。1 MOV AX, 0x90002 MOV ES, AX3 MOV DI, 04 MOV AX, 0x4f005 INT 0x106 CMP AX, 0x004f7 JNE scrn320在這里,我們給ES賦值為0x9000,DI賦值為0,AX賦值為0x4f00,再執(zhí)行INT 0x10。如果VBE存在,AX就會變成0x004f,否則就只能使用320*200的分辨率了。顯卡能利用的VBE信息,會寫入內(nèi)存中ES:DI指定的地址開始的512字節(jié),所以這樣要設置ES和DI。然后要判斷VBE版本。原作者的OS只支持VBE2.0以上的顯卡。1 MOV AX, ES:DI + 42 CMP AX, 0x02003 JB scrn320 ; if (AX 0x0200) goto scrn320即使VBE版本是2.0以上,也不能保證所有的畫面模式都能用。現(xiàn)在我們要通過VBE來查看一下畫面模式0x105能不能用。1 MOV CX, VBEMODE ; VBEMODE EQU 0x1052 MOV AX, 0x4f013 INT 0x104 CMP AX, 0x004f5 JNE scrn320如果AX是0x004f以外的值,那么所指定的畫面模式就不能用。此次取得的畫面模式信息也被寫入DS:DI開始的512字節(jié)處(即覆蓋了之前檢查VBE是否存在的結(jié)果)。畫面模式信息中重要的有如下幾個。 WORDES:DI + 0x00 ; 模式屬性bit7不是1就不好辦 WORDES:DI + 0x12 ; X的分辨率 WORDES:DI + 0x14 ; Y的分辨率 WORDES:DI + 0x19 ; 顏色數(shù)必須為8 WORDES:DI + 0x1b ; 顏色的指定方法必須為4(即調(diào)色板模式) WORDES:DI + 0x28 ; VRAM的地址我們來確認如下三項內(nèi)容: 顏色數(shù)是否為8 是否為調(diào)色板模式 畫面模式號碼可否加上0x4000再進行指定 1 CMP BYTE ES:DI + 0x19, 8 2 3 JNE scrn320 4 5 CMP BYTE ES:DI + 0x1b, 4 6 7 JNE scrn320 8 9 MOV AX, ES:DI + 0x0010 11 AND AX, 0x008012 13 JZ scrn320 ; 模式屬性的bit7是0,所以放棄如果上述步驟中沒有跳入scrn320,那么就可以使用高分辨率。 1 MOV BX, VBEMODE+0x4000 2 MOV AX, 0x4f02 3 INT 0x10 4 MOV BYTE VMODE, 8 ; 記下畫面模式(參考C語言) 5 MOV AX, ES:DI + 0x12 6 MOV SCRNX, AX 7 MOV AX, ES:DI + 0x14 8 MOV SCRNY, AX 9 MOV EAX, ES:DI + 0x2810 JMP keystatus最后的JMP指令,用來讓程序跳過后面的scrn320,直接進入在BIOS中查詢鍵盤狀態(tài)的地方。下面就剩下scrn320這一小段了。1 scrn320:2 MOV AL, 0x13 ; VGA圖,320*200*8bit彩色3 MOV AH, 0x004 INT 0x105 MOV BYTE VMODE, 8 ; 記下畫面模式(參考C語言)6 MOV WORD SCRNX, 3207 MOV WORD SCRNY, 2008 MOV DWORD VRAM, 0x000a0000我用VMware分別試驗了640*480*8bit彩色、800*600*8bit彩色、1024*768*8bit彩色、1280*1024*8bit彩色這幾種情況,發(fā)現(xiàn)均可以支持。另外,如原作者所說,QEMU不支持1280*1024*8bit彩色。這也是VMware比QEMU更強一些的一個證據(jù)。截圖如下。下面是600*4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論