1. 程式人生 > >組合語言(十二)顏色搭配顯示+BIOS功能呼叫表+INT 10H功能詳細列表

組合語言(十二)顏色搭配顯示+BIOS功能呼叫表+INT 10H功能詳細列表

顏色顯示

二進位制數 顏色 例子 二進位制數 顏色 例子
0000 黑色 black 1000 灰色 gray
0001 藍色 blue 1001 淡藍色 light blue
0010 綠色 green 1010 淡綠色 light green
0011 青色 cyan 1000 淡青色 light cyan
0100 紅色 red 1100 淡紅色 light red
0101 紫紅色 magenta 1101 淡紫紅色 light magenta
0110 棕色 brown 1110 黃色 yellow
0111 銀色 light gray 1111 白色 white

BIOS 中斷向量表

中斷 描述
INT 00h CPU: 除零錯,或商不合法時觸發
INT 01h CPU: 單步陷阱,TF標記為開啟狀態時,每條指令執行後觸發
INT 02h CPU: 非可遮蔽中斷, 如 開機自我測試 時發生記憶體錯誤觸發。
INT 03h CPU: 第一個未定義的中斷向量, 約定俗成僅用於除錯程式
INT 04h CPU: 算數溢位。通常由INTO指令在置溢位位時觸發。
INT 05h 在按下Shift-Print Screen或BOUND指令檢測到範圍異常時觸發。
INT 06h CPU: 非法指令。
INT 07h CPU: 沒有數學協處理器時嘗試執行浮點指令觸發。
INT 08h IRQ0: 可程式設計中斷控制器每 55 毫秒觸發一次,即每秒 18.2 次。
INT 09h IRQ1: 每次鍵盤按下、按住、釋放。
INT 0Ah IRQ2:
INT 0Bh IRQ3: COM2/COM4
INT 0Ch IRQ4: COM1/COM3
INT 0Dh IRQ5: 硬碟控制器(PC/XT 下)或 LPT2
INT 0Eh IRQ6: 需要時由軟碟控制器呼叫。
INT 0Fh IRQ7: LPT1
INT 10h 顯示服務 - 由BIOS或作業系統設定以供軟體呼叫。
AH=00h 設定顯示模式
AH=01h 設定遊標形態
AH=02h 設定遊標位置
AH=03h 獲取遊標位置與形態
AH=04h 獲取光筆位置
AH=05h 設定顯示頁
AH=06h 清除或卷軸畫面(上)
AH=07h 清除或卷軸畫面(下)
AH=08h 讀取遊標處字元與屬性
AH=09h 更改遊標處字元與屬性
AH=0Ah 更改遊標處字元
AH=0Bh 設定邊界顏色
AH=0Eh 在TTY模式下寫字元
AH=0Fh 取得目前顯示模式
AH=13h 寫字串
INT 11h 返回裝置列表。
INT 12h 獲取常規記憶體容量。
INT 13h 低階磁碟服務。
AH=00h 復位磁碟驅動器。
AH=01h 檢查磁碟驅動器狀態。
AH=02h 讀扇區。
AH=03h 寫扇區。
AH=04h 校驗扇區。
AH=05h 格式化磁軌。
AH=08h 取得驅動器引數。
AH=09h 初始化硬碟驅動器引數。
AH=0Ch 尋道。
AH=0Dh 復位硬碟控制器。
AH=15h 取得驅動器型別。
AH=16h 取得軟碟機中碟片的狀態。
INT 14h 串列埠通訊例程。
AH=00h 初始化串列埠。
AH=01h 寫出字元。
AH=02h 讀入字元。
AH=03h 狀態。
INT 15h 其它(系統支援例程)。
AH=4FH 鍵盤攔截。
AH=83H 事件等待。
AH=84H 讀遊戲杆。
AH=85H SysRq 鍵。
AH=86H 等待。
AH=87H 塊移動。
AH=88H 獲取擴充套件記憶體容量。
AH=C0H 獲取系統引數。
AH=C1H 獲取擴充套件 BIOS 資料區段。
AH=C2H 指標裝置功能。
AH=E8h, AL=01h (AX = E801h) 獲取擴充套件記憶體容量(自從 1944 年引入的新功能),可獲取到 64MB 以上的記憶體容量。
AH=E8h, AL=20h (AX = E820h) 查詢系統地址對映。該功能取代了 AX=E801h 和 AH=88h。
INT 16h 鍵盤通訊例程。
AH=00h 讀字元。
AH=01h 讀輸入狀態。
AH=02h 讀 Shift 鍵(修改鍵)狀態。
AH=10h 讀字元(增強版)。
AH=11h 讀輸入狀態(增強版)。
AH=12h 讀 Shift 鍵(修改鍵)狀態(增強版)。
INT 17h 列印服務。
AH=00h 列印字元。
AH=01h 初始化印表機。
AH=02h 檢查印表機狀態。
INT 18h 執行磁帶上的 BASIC 程式:“真正的”IBM 相容機在 ROM 裡內建 BASIC 程式,當引導失敗時由 BIOS 呼叫此例程解釋執行。(例:列印“Boot disk error. Replace disk and press any key to continue...”這類提示資訊)
INT 19h 加電自檢之後載入作業系統。
INT 1Ah 實時鐘服務。
AH=00h 讀取實時鐘。
AH=01h 設定實時鐘。
AH=02h 讀取實時鐘時間。
AH=03h 設定實時鐘時間。
AH=04h 讀取實時鐘日期。
AH=05h 設定實時鐘日期。
AH=06h 設定實時鐘鬧鈴。
AH=07h 重置實時鐘鬧鈴。
INT 1Bh Ctrl+Break,由 IRQ 9 自動呼叫。
INT 1Ch 預留,由 IRQ 8 自動呼叫。
INT 1Dh 不可呼叫:指向視訊引數表(包含視訊模式的資料)的指標。
INT 1Eh 不可呼叫:指向軟盤模式表(包含關於軟碟機的大量資訊)的指標。
INT 1Fh 不可呼叫:指向視訊圖形字元表(包含從 80h 到 FFh 的 ASCII 字元的資料)的資訊。
INT 41h 地址指標:硬碟引數表(第一硬碟)。
INT 46h 地址指標:硬碟引數表(第二硬碟)。
INT 4Ah 實時鐘在鬧鈴時呼叫。
INT 70h IRQ8: 由實時鐘呼叫。
INT 74h IRQ12: 由滑鼠呼叫
INT 75h IRQ13: 由數學協處理器呼叫。
INT 76h IRQ14: 由第一個 IDE 控制器所呼叫
INT 77h IRQ15: 由第二個 IDE 控制器所呼叫

INT 10H支援功能列表

功能 功能程式碼 引數 返回
設定顯示模式 AH=00H AL=顯示模式 AL=顯示模式標誌/CRT控制模式位元組
設定文字方式游標 AH=01H CH=行掃描開始,CL=行掃描結束

通常一個字元單元有8個掃描行(0-7)。所以,CX=0607H是一個正常的游標,CX=0007H是一個完整塊游標。如果設定CH的第5位,這通常意味著“隱藏游標”,所以CX=2607H是一種無形游標。

有些視訊卡有16條掃描線(00H-0Fh)。

有些視訊卡不使用CH的第5位,對於這種情況,可以嘗試行掃描開始大於行掃描結束(如:CX=0706h) 。

 
設定游標位置 AH=02H BH=頁碼,DH=行,DL=列  
獲取游標位置和形狀 AH=03H BX=頁碼 AX=0,CH=行掃描開始,CL=行掃描結束,DH=行,DL=列
讀取光筆位置(VGA系統不工作) AH=04H   AH=狀態(0=無觸發,1=觸發),BX=X畫素,CH=Y畫素,CL=畫素行模式(0FH-10H),DH=字元Y,DL=字元X
選擇活動顯示頁 AH=05H AL=頁碼  
向上滾動視窗 AH=06H AL=滾動的行(0=清除,被用於CH,CL,DH,DL),

BH=背景顏色和前景顏色,BH=43H,意義為背景顏色為紅色,前景顏色為青色。請參考 BIOS顏色屬性
CH=高行數,CL=左列數,DH=低行數,DL=右列數

 
向下滾動視窗 AH=07H 參考向上滾動  
讀游標所在位置的字元和屬性 AH=08H BH=頁碼 AH=顏色,AL=字元
在當前游標位置寫字元和屬性 AH=09H AL=字元,BH=頁碼,BL=顏色,CX=多次列印字元  
在游標位置寫入字元 AH=0AH AL=字元,BH=頁碼,CX=多次列印字元  
設定背景/邊框顏色 AH=0BH,BH=00H BL=背景/邊框顏色(邊框顏色只能在文字模式設定)  
設定調色盤 AH=0BH,BH=01H BL=調色盤ID(只使用於CGA,但現在的顯示卡都支援多個或所有模式。)  
寫圖形畫素 AH=0CH AL=顏色,BH=頁碼 CX=x,DX=y  
讀圖形畫素 AH=0DH BH=頁碼,CX=x,DX=y AL=顏色
電傳打字機輸出 AH=0EH AL=字元,BH=頁碼,BL=顏色(只適用於圖形模式)  
獲取當前顯示模式 AH=0FH   AH=螢幕字元的列數
         AL=顯示模式(參見功能00H中的說明)
         BH=頁碼
寫字串(EGA+,最低PC AT ) AH=13H AL=寫模式,BH=頁碼,BL=顏色,CX=字串長度,DH=行,DL=列,ES:BP=字串偏移量

1、功能00H

功能描述:設定顯示器模式

入口引數:AH=00H    AL= 顯示器模式,見下表所示

出口引數:無

可用的顯示模式如下所列:

00H:40×25 16色 文字

01H:40×25 16 色 文字

02H:80×25 16色 文字

03H: 80×25 16色 文字

04H:320×200 4色

05H:320×200 4 色

06H:640×200 2色

07H:80×25 2色 文字

08H:160×200 16色

09H:320×200 16 色

0AH:640×200 4色

0BH:保留

0CH:保留

0DH:320×200 16色

0EH:640×200 16 色

0FH:640×350 2(單色)

10H:640×350 4色

10H:640×350 16色

11H:640×480 2 色

12H:640×480 16色

13H:640×480 256色

對於超級VGA顯示卡,我們可用AX=4F02H和下列BX 的值來設定其顯示模式。

BX顯示模式屬性

100H:640×400 256色

101H:640×480 256色

102H:800×600 16 色

103H:800×600 256色

104H:1024×768 16色

105H:1024×768 256色

106H:1280×1024 16 色

107H:1280×1024 256色

108H:80×60 文字模式

109H:132×25 文字模式

10AH:132×43 文 本模式

10BH:132×50 文字模式

10CH:132×60 文字模式

2、功能01H

功能描述:設定 游標形狀

入口引數:AH=01H

CH低四位=游標的起始行

CL低四位=游標的終止行

出口引數:無

3、 功能02H

功能描述:用文字座標下設定游標位置

入口引數:AH=02H

BH=顯示頁碼

DH=行(Y座標)

DL= 列(X座標)

出口引數:無

4、功能03H

功能描述:在文字座標下,讀取游標各種資訊

入口參 數:AH=03H

BH=顯示頁碼

出口引數:CH=游標的起始行

CL=游標的終止行

DH=行(Y座標)

DL=列 (X座標)

5、功能04H

功能描述:獲取當前狀態和光筆位置

入口引數:AH=04H

出口參 數:AH=00h——光筆未按下/未觸發,01h——光筆已按下/已觸發

BX=象素列(圖形X座標)

CH=象素行(圖形Y座標,顯示模 式:04H~06H)

CX=象素行(圖形Y座標,顯示模式:0DH~10H)

DH=字元行(文字Y座標)

DL=字元列(文字X坐 標)

6、功能05H

功能描述:設定顯示頁,即選擇活動的顯示頁

入口引數:AH=05H

AL=顯示頁

對 於CGA、EGA、MCGA和VGA,其顯示頁如下表所列: 模式頁數顯示器型別

00H、01H0~7CGA、EGA、MCGA、VGA

02H、 03H0~3CGA

02H、03H0~7EGA、MCGA、VGA

07H0~7EGA、VGA

0DH0~7EGA、VGA

0EH0~3EGA、 VGA

0FH0~1EGA、VGA

10H0~1EGA、VGA

對於PCjr:

AL=80H——讀取CRT/CPU頁寄存 器

81H——設定CPU頁暫存器

82H——設定CRT頁暫存器

83H——設定CRT/CPU頁暫存器

BH=CRT頁(子 功能號82H和83H)

BL=CPU頁(子功能號81H和83H)

出口引數:對於前者,無出口引數,但對PCjr在子功能80H~83H 呼叫下,有:BH=CRT頁暫存器,BL=CPU頁暫存器

7、功能06H和07H

功能描述:初始化螢幕或滾屏

入口 引數:AH=06H——向上滾屏,07H——向下滾屏

AL=滾動行數(0——清視窗)

BH=空白區域的預設屬性

(CH、CL)= 視窗的左上角位置(Y座標,X座標)

(DH、DL)=視窗的右下角位置(Y座標,X座標)

出口引數:無

8、功能 08H

功能描述:讀游標處的字元及其屬性

入口引數:AH=08H

BH=顯示頁碼

出口引數:AH=屬性

AL=字 符

9、功能09H

功能描述:在當前游標處按指定屬性顯示字元

入口引數:AH=09H

AL=字元

BH= 顯示頁碼

BL=屬性(文字模式)或顏色(圖形模式)

CX=重複輸出字元的次數

出口引數:無

10、功能 0AH

功能描述:在當前游標處按原有屬性顯示字元

入口引數:AH=0AH

AL=字元

BH=顯示頁碼

BL=顏色 (圖形模式,僅適用於PCjr)

CX=重複輸出字元的次數

出口引數:無

11、功能0BH

功能描述:設定調 色板、背景色或邊框

入口引數:AH=0BH

設定顏色:BH=00H,01=顏色

選擇調色盤:BH=01H,BL=調色盤 (320×200、4種顏色的圖形模式)

出口引數:無

12、功能0CH

功能描述:寫圖形象素

入口參 數:AH=0CH

AL=象素值

BH=頁碼

(CX、DX)=圖形座標列(X)、行(Y)

出口引數:無

13、功能0DH

功能描述:讀圖形象素

入口引數:AH=0DH

BH=頁碼

(CX、DX)=圖形座標列(X)、行(Y)

出 口引數:AL=象素值

14、功能0EH

功能描述:在Teletype模式下顯示字元

入口引數:AH=0EH

AL= 字元

BH=頁碼

BL=前景色(圖形模式)

出口引數:無

15、功能0FH

功能描述:讀取顯示器模式

入 口引數:AH=0FH

出口引數:AH=螢幕字元的列數

AL=顯示模式(參見功能00H中的說明)

BH=頁碼

16、功能10H

功能描述:顏色中斷。

其子功能說明如下:

00H — 設定調色盤暫存器

01H — 設定邊框顏色

02H — 設 置調色盤和邊框

03H — 觸發閃爍/亮顯位

07H — 讀取調色盤暫存器

08H — 讀取邊框顏色

09H — 讀取調 色板和邊框

10H — 設定顏色暫存器

12H — 設定顏色暫存器塊

13H — 設定顏色頁狀態

15H — 讀取顏色寄 存器

17H — 讀取顏色暫存器塊

1AH — 讀取顏色頁狀態

1BH — 設定灰度值

17、功能11H

功能描述:字型中斷。

其子功能說明如下:

00H裝入使用者字型和可程式設計控制器

10H裝入使用者字型和可程式設計控制器

01H裝入 8×14 ROM字型和可程式設計控制器

11H裝入8×14 ROM字型和可程式設計控制器

02H裝入8×8 ROM字型和可程式設計控制器

12H 裝入8×8 ROM字型和可程式設計控制器

03H設定塊指示器

04H裝入8×16 ROM字型和可程式設計控制器

14H裝入 8×16 ROM字型和可程式設計控制器

20H設定INT 1Fh字型指標

21H為使用者字型設定INT 43h

22H為 8×14 ROM字型設定INT 43H

23H為8×8 ROM字型設定INT 43H

24H為8×16 ROM字型設定INT 43H

30H 讀取字型資訊

18、功能12H

功能描述:顯示器的配置中斷。

其子功能說明如下:

10H — 讀取配置資訊

20H — 選 擇螢幕列印

30H — 設定掃描行

31H — 允許/禁止裝入預設調色盤

32H — 允許/禁止顯示

33H — 允許/ 禁止灰度求和

34H — 允許/禁止游標模擬

35H — 切換活動顯示

36H — 允許/禁止螢幕重新整理

19、功能 13H

功能描述:在Teletype模式下顯示字串

入口引數:AH=13H

BH=頁碼

BL=屬性(若AL=00H或 01H)

CX=顯示字串長度

(DH、DL)=座標(行、列)

ES:BP=顯示字串的地址 AL=顯示輸出方式

0—— 字串中只含顯示字元,其顯示屬性在BL中。顯示後,游標位置不變

1——字串中只含顯示字元,其顯示屬性在BL中。顯示後,游標位置改變

2 ——字串中含顯示字元和顯示屬性。顯示後,游標位置不變

3——字串中含顯示字元和顯示屬性。顯示後,游標位置改變

出口引數:無

20、 功能1AH

功能描述:讀取/設定顯示組合編碼,僅PS/2有效,在此從略

21、功能1BH

功能描述:讀取功能/ 狀態資訊,僅PS/2有效,在此從略

22、功能1CH

功能描述:儲存/恢復顯示器狀態,僅PS/2有效,在此從略