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...