第14天 高解析度及鍵盤輸入

2021-10-05 04:52:25 字數 2371 閱讀 5943

2020.4.16

1. 繼續測試效能(harib11a~harib11c)

先編寫函式set490(bootpack.c):

void set490(struct fifo32 *fifo, int mode)

}return;

}

在harimain設定timer~timer3之前,加入**set490(&fifo, 1)就可以設定490個定時器了。

測試:

分析:有時候,追加指令也會讓jmp的執行速度加快。此處不再拓展。

如此細微的改進值得麼?

2. 提高解析度(1)(harib11d)

vbe的畫面模式號碼:

3. 提高解析度(2)(harib11e)

需要保證vbe的版本在2.0及以上,否則就不能使用高解析度。所以需要先調查一下vbe的版本號。

; 檢查vbe的版本號   

mov ax,[es:di+4]

cmp ax,0x0200

jb scrn320 ; if (ax < 0x0200) goto scrn320

調查0x105畫面模式能否使用:

; 獲取畫面模式資訊

mov cx,vbemode

mov ax,0x4f01

int 0x10

cmp ax,0x004f

jne scrn320

畫面模式的重要資訊:

; 畫面模式資訊的確認

cmp byte [es:di+0x19],8

jne scrn320

cmp byte [es:di+0x1b],4

jne scrn320

mov ax,[es:di+0x00]

and ax,0x0080

jz scrn320 ; 模式屬性的第7位是0,所以放棄

進行畫面模式切換

; 畫面模式的切換

mov bx,vbemode+0x4000

mov ax,0x4f02

int 0x10

mov byte [vmode],8 ; 記下畫面模式

mov ax,[es:di+0x12]

mov [scrnx],ax

mov ax,[es:di+0x14]

mov [scrny],ax

mov eax,[es:di+0x28]

mov [vram],eax

jmp keystatus

當vbe不存在或版本不夠或模式有問題的情況下,只能使用320*200的畫面模式了。

scrn320:

mov al,0x13 ; vga圖,320*200*8bit彩色

mov ah,0x00

int 0x10

mov byte [vmode],8 ;

mov word [scrnx],320

mov word [scrny],200

mov dword [vram],0x000a0000 /*指定vram位址*/

make run:

1024*768的畫面就是大!

4. 鍵盤輸入(1)(harib11f)

實現按下鍵盤a,顯示字母a

for (;;)  else 

} else if (512 <= i && i <= 767) else if (i == 10) else if (i == 3) else if (i == 1) else if (i == 0)

}}

make run並按下鍵盤a:

字元a顯示出來了。

5. 鍵盤輸入(2)(harib11g)

make然後在vmware上執行:

6. 追記內容(1)(harib11h)

make後使用vmware執行:

7. 追記內容(2)(harib11i)

make以後用vmware執行:

8. 再接再厲

高解析度格式

wiki 當使用高精度進行數值求解偏微分方程時,若方程的解存在間斷或激波,需要使用高解析度格式。通常其具有以下性質 一般的格式不具備求解大梯度現象時獲得高解析度 它們通常會引入非物理影響,如使解平滑或者高階振盪。godunov定理證明了線性方法不能提供高於一階的無振盪格式,這個困難吸引了許多學者關注...

解析度單位及換算

文章 對於測試數字成像裝置非常重要的引數是解析度。但有不同的方式來表達數位相機的解析度,有時令人困惑。下面介紹的是是最常見的單位。百萬畫素 這台相機有1000萬畫素的解析度 是我們經常在廣告上看到的資料,但是從技術上看,這是錯誤的。乙個1000萬畫素的相機有一千萬畫素,可以採集鏡頭投射到感測器上的影...

螢幕解析度問題及 media

1.畫素 物理畫素 裝置畫素 物理畫素也被稱為裝置畫素,它是顯示裝置最微小的物理部件。螢幕密度 通常以每英吋有多少物理畫素來計算 ppi 獨立畫素 css畫素,是乙個抽象的單位,主要用於瀏覽器上,用了精確度量web頁面上的內容。一般情況下,css畫素被稱為與裝置無關的畫素 device indepe...