int 10 中断

来源:互联网 发布:2017微信用户数据报告 编辑:程序博客网 时间:2024/06/02 11:34

INT 10H 是由 BIOS 對螢幕及顯示器所提供的服務程式,而後倚天公司針對倚天中文提供了許多服務程式,這些服務程式也加掛在 INT 10H 內。使用 INT 10H 中斷服務程式時,先指定 AH 暫存器為下表編號其中之一,該編號表示欲呼叫的功用,而其他暫存器的詳細說明,參考表後文字,當一切設定好之後再呼叫 INT 10H。底下是它們的說明:

編號功用編號功用00設定顯示模式01設定文字模式時游標大小02設定游標位置03讀取游標位置04讀取光筆位置05選擇顯示頁06向上捲動螢幕07向下捲動螢幕08讀取游標所在位置之字元及屬性09在游標所在位置寫入字元及屬性0A在游標所在位置寫入一字元0B設定調色盤0C寫入一有顏色的點0D讀取點0E寫入字串0F讀取模式狀態


註一。

註一的 16 色。呼叫此中斷時,先決定要設定背景色抑或調色盤,

  • 要設定背景色時,則使 BH 為 0,再使 BL 之數值為 0 到 0fh 之間表示註一的 16 色之一。
  • 要設定調色盤時,則使 BH 為 1。再設定 BL 為零或一表示選擇那一種調色盤。

背景色只有在前景色為 0 時才會顯現出來。

AH=0CH

AH=0Ch/INT 10H 是在繪圖模式中印出一點 ( 也就是寫入點像,write graphics pixel ),而 AH=0DH/INT 10H 則是讀取點像 ( read graphics pixel )。

寫入時,要寫入位置 X 座標存於 CX 暫存器,Y 座標存於 DX 暫存器,顏色存於 AL 暫存器。和文字模式相同,螢光幕上的 Y 座標是最上面一列為零,越下面越大,X 座標則和數學的定義相同。CX、DX、AL 值之範圍與顯示模式有關:

顯示模式X 座標Y 座標顏色40~3190~1990、150~3190~1990~360~6390~1990、1

AH=0DH/INT 10H 則是讀取某一位置之點像,您必須指定 CX、DX,而 INT 10H 會傳回該位置點像之顏色。

AH=0EH

這個副程式是使顯示器像打字機一樣的印出字元來,在前面用 AH=09H/INT 10H 和 AH=0AH/INT 10H 都可以在螢光幕上顯示字元,但是這兩奘方式顯示字元之後,游標位置並不移動,而 AH=0EH/INT 10H 則會使游標位置移動,每顯示一個字元,游標會往右移一格,假如已經到最右邊了,則游標會移到最左邊並移到下一列,假如已經移到最下面一列的最右邊,則螢幕會向上捲動。

AL 暫存器存要顯示的字元,BH 為目前的顯示頁,如果是在圖形模式,則 BH 須設為 0,假如是在圖形模式下,也可以設定 BL 來表示文字的顏色,文字模式下的 BL 則無功能。

AH=0FH

這個服務程式是得到目前的顯示模式,呼叫前只需使 AH 設為 0fh,當由 INT 10H 返回時,顯示模式存於 AL 暫存器 ( 參考 AH=00H/INT 10H 的顯示模式表 ),目前的顯示頁存於 BH 暫存器,總字元行數存於 AH 暫存器。


註一: 所謂屬性是指字元的顏色、背景顏色、是否閃爍、有沒有底線等性質。在彩色顯示卡 ( CGA/EGA/VGA 等 ) 的文字模式中,顏色是用 4 個位元表示,故可以表現出 16 種顏色,如下表:

二進位數顏色例子二進位數顏色例子0000黑色black1000灰色gray0001藍色blue1001淡藍色light blue0010綠色green1010淡綠色light green0011青色cyan1000淡青色light cyan0100紅色red1100淡紅色light red0101紫紅色magenta1101淡紫紅色light magenta0110棕色brown1110黃色yellow0111銀色light gray1111白色white

在彩色顯示器裏,如 CGA、EGA、VGA 等,常用一個位元組 ( 8 個位元 ) 來表示文字顏色和背景顏色,通常以第 0~3 位元表示文字本身顏色;第 4~6 位元表示背景顏色,背景顏色只有上表左欄的 8 種而已;第 7 個位元,表示是否閃爍,0 表示不閃爍,1 表示閃爍。

但是在單色顯示器裏,如 MDA 和 Hercules 卡中,這些顏色表並無意義,所以屬性解釋方式不同,請看下表:

數值屬性00H空白,不顯示任何資料77H顯示白色方塊07H正常的黑底白字70H反白的白底黑字01H加底線

BIOS 呼叫 INT 10H,AH=00H
設定螢幕影相模式
 (AL) <= 模式碼 (正常為 03h)
模式碼: 解析度 顏色數目 頁數 位址
 文 00H: 40*25 16 色 8 頁 B8000H~B87CFH
 字 01H: 80*25 16 色 8 頁 B8000H~B87CFH
 模 02H: 80*25 16 色 8 頁 B8000H~B8F9FH
 式 03H: 80*25 16 色 8 頁 B8000H~B8F9FH
    07H: 80*25 2 色 8 頁 B8000H~B8F9FH
      
 繪 04H: 320*200 4 色 1 頁 B8000H~BBF3FH
 圖 05H: 320*200 4 色 1 頁 B8000H~BBF3FH
 模 06H: 640*200 2 色 1 頁 B8000H~BBF3FH
 式 0DH: 320*200 16 色 8 頁 A0000H~A1F3FH
    0EH: 640*200 16 色 4 頁 A0000H~A3E7FH
    0FH: 640*350 2 色 2 頁 A0000H~A6D5FH
    10H: 640*350 16 色 2 頁 A0000H~A6D5FH
    11H: 640*480 2 色 1 頁 A0000H~A95FFH
    12H: 640*480 16 色 1 頁 A0000H~A95FFH
    13H: 320*200 256 色 1 頁 A0000H~AF9FFH


BIOS 呼叫 INT 10H,AH=01H
設定游標形狀 
 (CH) <= 游標的啟始線 (0~15)  <---- 啟始線
 (CL) <= 游標的終止線 (0~15)  
註:正常: CH=0DH,CL=0EH  <---- 終止線
 消失: CH=0FFH,CL=0FFH 


BIOS 呼叫 INT 10H,AH=02H
設定游標位置
 (DH) <= 游標的 列 數 (0~24)
 (DL) <= 游標的 行 數 (0~79)
 (BH) <= 頁碼


BIOS 呼叫 INT 10H,AH=03H
取得游標位置
 (BH) <= 頁碼 
游標的 列 數 => (DH)  <---- 啟始線
游標的 行 數 => (DL)  
游標的啟始線 => (CH)  <---- 終止線
游標的終止線 => (CL) 
註:正常: CH=0DH,CL=0EH
 消失: CH=0FFH,CL=0FFH


BIOS 呼叫 INT 10H,AH=05H
畫面頁區的號擇
 (AL) <= 頁碼


INT 10h,AH=06H
把指定的視窗範圍上捲
 (AL) <= 捲動的列數,若為 0 則清除螢幕
 (BH) <= 捲動後空出位置放入的屬性
 (CH) <= 捲動範圍的左上座標 列
 (CL) <= 捲動範圍的左上座標 行
 (DH) <= 捲動範圍的右下座標 列
 (DL) <= 捲動範圍的右下座標 行
 
顏色屬性: bh =b7 b6 b5 b4 b3 b2 b1 b0
bit0~2 :字體顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit3 :字體亮度 (0:字體正常,1:字體高亮度)
bit4~6 :背景顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit7 :字體閃爍 (0:不閃爍,1:字體閃爍)


INT 10h,AH=07H
把指定的視窗範圍下捲
 (AL) <= 捲動的列數,若為 0 則清除螢幕
 (BH) <= 捲動後空出位置放入的屬性
 (CH) <= 捲動範圍的左上座標 列
 (CL) <= 捲動範圍的左上座標 行
 (DH) <= 捲動範圍的右下座標 列
 (DL) <= 捲動範圍的右下座標 行
 
顏色屬性: bh =b7b6b5b4b3b2b1b0
bit0~2 :字體顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit3 :字體亮度 (0:字體正常,1:字體高亮度)
bit4~6 :背景顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit7 :字體閃爍 (0:不閃爍,1:字


BIOS 呼叫 INT 10H,AH=08H
讀取游標所在位置的字元及屬性
 (BH) <= 頁碼
字元 ascii => (AL)
字元的屬性 => (AH)
顏色屬性: ah =b7b6b5b4b3b2b1b0
bit0~2 :字體顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit3 :字體亮度 (0:字體正常,1:字體高亮度)
bit4~6 :背景顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit7 :字體閃爍 (0:不閃爍,1:字體閃爍)


BIOS 呼叫 INT 10H,AH=09H
寫入字元及屬性在游標所在位置,游標不動 (繪圖模式亦能使用)
 (AL) <= 欲寫入的字元 ascii
 (BL) <= 欲寫入之字元的屬性
 (CX word) <= 欲顯示的次數
 (BH) <= 頁碼
顏色屬性: bl =b7b6b5b4b3b2b1b0
bit0~2 :字體顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit3 :字體亮度 (0:字體正常,1:字體高亮度)
bit4~6 :背景顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit7 :字體閃爍 (0:不閃爍,1:字體閃爍)

 

BIOS 呼叫 INT 10H,AH=0AH
寫入字元在游標所在位置,游標不動,屬性不變 (繪圖模式亦能使用)
 (AL) <= 欲寫入的字元 ascii
 (CX word) <= 欲顯示的次數
 (BH) <= 頁碼
 (BL) <= 前景顏色 (繪圖模式時)
└┘
┌┐
BIOS 呼叫 INT 10H,AH=0BH
設定文字模式(0~3)的邊框顏色 或 繪圖模式(4、5)的背景顏色
 (BL) <= 顏色屬性
 (1)文字模式(0~3):邊框顏色,只用到 低4bit,共16色
 (2)繪圖模式(4、5、6):背景顏色,只用到 低4bit,共16色
 bit0~2 :顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
 bit3 :為亮度 (1:高亮度,0:正常)


BIOS 呼叫 INT 10H,AH=0BH
設定繪圖模式(4、5)的調色盤
 (BL) <= 調色盤 (以 0 bit 決定)
bit0 = 0 (黑、綠、紅、黃)
 = 1 (黑、青、紫、白)


BIOS 呼叫 INT 10H,AH=0CH
在繪圖模式下畫一點
 (AL) <= 像點的顏色值
 (CX word) <= 座標 X 軸
 (DX word) <= 座標 Y 軸
 (BH) <= 頁碼

 

BIOS 呼叫 INT 10H,AH=0DH
在繪圖模式下讀點像值
 (CX word) <= 座標 X 軸
 (DX word) <= 座標 Y 軸
像點的顏色值 => (AL)


BIOS 呼叫 INT 10H,AH=0EH
在文字模式 或 繪圖模式下顯示一字元,游標則右移一格
 (AL) <= 字元 ascii
 (BH) <= 頁碼
 (BL) <= 前景顏色碼 (繪圖模式時)
註:所謂 TTY 就是類似打字機輸出方式,每顯示一字元,游標則右移一格,
 當移到最後一行時,游標則至跳下一列的最左邊開始,當移到最後一列
 時,螢幕則上捲一列


BIOS 呼叫 INT 10H,AH=0FH
取得螢幕影相模式
每行字數 => (AH)
模式號碼 => (AL)
使用頁碼 => (BH)
模式碼: 解析度 顏色數目 頁數 位址
 文 00H: 40*25 16 色 8 頁 B8000H~B87CFH
 字 01H: 80*25 16 色 8 頁 B8000H~B87CFH
 模 02H: 80*25 16 色 8 頁 B8000H~B8F9FH
 式 03H: 80*25 16 色 8 頁 B8000H~B8F9FH
 07H: 80*25 2 色 8 頁 B8000H~B8F9FH
 解析度 顏色數目 頁數 位址
 繪 04H: 320*200 4 色 1 頁 B8000H~BBF3FH
 圖 05H: 320*200 4 色 1 頁 B8000H~BBF3FH
 模 06H: 640*200 2 色 1
頁 B8000H~BBF3FH
 式 0DH: 320*200 16 色 8 頁 A0000H~A1F3FH
 0EH: 640*200 16 色 4 頁 A0000H~A3E7FH
 0FH: 640*350 2 色 2 頁 A0000H~A6D5FH
 10H: 640*350 16 色 2 頁 A0000H~A6D5FH
 11H: 640*480 2 色 1 頁 A0000H~A95FFH
 12H: 640*480 16 色 1 頁 A0000H~A95FFH
 13H: 320*200 256 色 1 頁 A0000H~AF9FFH


BIOS 呼叫 INT 10H,AX=1130H
讀取 VGA BIOS 中有關字形的資訊
 (BH) <= 所要取的位址模式
取出的位址 => (ES:BP)
目前字形的高度 => (CX)
目前字形下螢幕列數-1 => (DL)
位址模式:00H:中斷 1FH 的位址
 01H:中斷 43H 的位址
 02H:8*14 字形表的位址
 03H:8*8 字形表的位址
 04H:8*8 ascii 值大於 127 的字形表位址
 05H:9*14 字形表的位址
 06H:8*16 字形表的位址
 07H:9*16 字形表的位址
註:中斷向量 1fh 的值亦是指向 ascii 值大於 127 的字形表位址
 中斷向量 43h 的值則是指向目前螢幕模式所使用的字形表位址


BIOS 呼叫 INT 10H,AH=13H
顯示一列字串
 (AL) <= 寫入模式
 (BL) <= 字元之屬性
 (CX word) <= 字串的長度
 (DH) <= 游標的座標 列 數
 (DL) <= 游標的座標 行 數
 (ES:BP) <= 存字串內容的記憶體變數
 (BH) <= 頁碼
寫入 AL=00H:字串的屬性由 BL 決定,所以 CX 所指的長度以 byte 為單位
模式 AL=01H:同 AL=00H,但游標會移到字串尾端,未顯示字元的位置
 AL=02H:字串屬性由每字元的後面一個byte指定,故 CX 單位為 word
 AL=03H:同 AL=02H,但游標會移到字串尾端,未顯示字元的位置
顏色屬性: bl =b7b6b5b4b3b2b1b0
bit0~2 :字體顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit3 :字體亮度 (0:字體正常,1:字體高亮度)
bit4~6 :背景顏色 (0:黑,1:藍,2:綠,3:青,4:紅,5:紫,6:綜,7:白)
bit7 :字體閃爍 (0:不閃爍,1:字體閃爍)


BIOS 呼叫 INT 10H,AH=80H
倚天中文的控制
 (AL) <= 控制碼,限輸入數值,如下
控 51H:釋放中文 30H:內碼輸入法 74H:透通模式切換
制 71H:釋放中文 31H:倉頡輸入法 4CH:條列模式(L)
碼 41H:切換為英文模式 32H:簡易輸入法 6CH:條列模式切換
 61H:中英文模式切換 33H:注音輸入法 48H:顯示內碼(H)
 6EH:切換為中文模式 34H:三角輸入法 68H:顯示內碼切換
 43H:切換為中文輸入 35H:簡捷輸入法 47H:圖形捲動(G)
 63H:中英文輸入切換 37H:行列輸入法 67H:圖形捲動切換
 46H:全形輸入 39H:電信輸入法 4DH:隱藏狀態列
 66H:全形、半形切換 54H:透通模式(T) 6DH:狀態列切換


BIOS 呼叫 INT 10H,AH=91H
檢查是否有載入倚天中文
載入狀態 => (AH != 91H 表有載入,AH = 91H 表未載入)
目前模式 => (DH),(bit7=0 表中文模式,bit7=1 表英文模式)

0 0
原创粉丝点击