在裸機上執行INT 10h時,每個字母是否對應一個0-1矩陣?

在裸機上執行INT 10h時,每個字母是否對應一個0-1矩陣?

If we call the INT 10h and set its parameters via assembly language, and then compile this code into a binary and write it into the boot sector of the floppy disk, we can output a string on the bare metal(or virutal machine without OS)螢幕.

...
; INT 10h
; When AH = 13h
; ES:BP = Offset of string
; CX = length of string
; AL = Write mode
; BH = Page Number, BL = Color
; DL = Column
mov ax, BootMessage
mov bp, ax
mov cx, 12
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
jmp $           ; while (true)
BootMessage: db "Hello World!"
...

在裸機螢幕上輸出字串

我想知道BIOS如何控制每個字元的字形?在某些電腦上,為什麼螢幕上的「A」與Sans-serif字體中的「A」類似,而不是Courier?但在其他計算機上,它可能是另一種字體。

BIOS或某個ROM中是否內建了一些0-1矩陣?例如下圖中的0-1矩陣對應的是字元A。

字母 A 的 0-1 矩陣

答案1

在作業系統載入之前,BIOS 控製文字的寫入方式。 BIOS 本身俱有將基本文字列印到螢幕上的指令。它需要它來繪製自己的 BIOS 螢幕。無論 BIOS 中硬編碼什麼字體,稍後都會使用該字體。

當您將此程式碼傳送到 BIOS 時,它會將其轉換為變更某些像素的顏色。雖然您希望它只列印前色,但實際上它也會列印背景色。否則文字會重疊,造成混亂。

它確實遵循基於固定大小的每個字母的矩陣,並且可以在運行時更改字元集。

這就是在 C64 上製作基於文字模式的遊戲的方式。程式設計師經常更改字體以便能夠繪製漂亮的圖形。有時,就像將玩家精靈放置在角色內並移動它一樣簡單。

相關內容