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、1AH=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
設定螢幕影相模式
模式碼: 解析度 顏色數目 頁數 位址
BIOS 呼叫 INT 10H,AH=01H
設定游標形狀
註:正常: CH=0DH,CL=0EH
BIOS 呼叫 INT 10H,AH=02H
設定游標位置
BIOS 呼叫 INT 10H,AH=03H
取得游標位置
游標的 列 數 => (DH)
游標的 行 數 => (DL)
游標的啟始線 => (CH)
游標的終止線 => (CL)
註:正常: CH=0DH,CL=0EH
BIOS 呼叫 INT 10H,AH=05H
畫面頁區的號擇
INT 10h,AH=06H
把指定的視窗範圍上捲
顏色屬性: 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
把指定的視窗範圍下捲
顏色屬性: 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
讀取游標所在位置的字元及屬性
字元 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
寫入字元及屬性在游標所在位置,游標不動 (繪圖模式亦能使用)
顏色屬性: 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
寫入字元在游標所在位置,游標不動,屬性不變 (繪圖模式亦能使用)
└┘
┌┐
BIOS 呼叫 INT 10H,AH=0BH
設定文字模式(0~3)的邊框顏色 或 繪圖模式(4、5)的背景顏色
BIOS 呼叫 INT 10H,AH=0BH
設定繪圖模式(4、5)的調色盤
bit0 = 0 (黑、綠、紅、黃)
BIOS 呼叫 INT 10H,AH=0CH
在繪圖模式下畫一點
BIOS 呼叫 INT 10H,AH=0DH
在繪圖模式下讀點像值
像點的顏色值 => (AL)
BIOS 呼叫 INT 10H,AH=0EH
在文字模式 或 繪圖模式下顯示一字元,游標則右移一格
註:所謂 TTY 就是類似打字機輸出方式,每顯示一字元,游標則右移一格,
BIOS 呼叫 INT 10H,AH=0FH
取得螢幕影相模式
每行字數 => (AH)
模式號碼 => (AL)
使用頁碼 => (BH)
模式碼: 解析度 顏色數目 頁數 位址
頁 B8000H~BBF3FH
BIOS 呼叫 INT 10H,AX=1130H
讀取 VGA BIOS 中有關字形的資訊
取出的位址 => (ES:BP)
目前字形的高度 => (CX)
目前字形下螢幕列數-1 => (DL)
位址模式:00H:中斷 1FH 的位址
註:中斷向量 1fh 的值亦是指向 ascii 值大於 127 的字形表位址
BIOS 呼叫 INT 10H,AH=13H
顯示一列字串
寫入 AL=00H:字串的屬性由 BL 決定,所以 CX 所指的長度以 byte 為單位
模式 AL=01H:同 AL=00H,但游標會移到字串尾端,未顯示字元的位置
顏色屬性: 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
倚天中文的控制
控 51H:釋放中文 30H:內碼輸入法 74H:透通模式切換
制 71H:釋放中文 31H:倉頡輸入法 4CH:條列模式(L)
碼 41H:切換為英文模式 32H:簡易輸入法 6CH:條列模式切換
BIOS 呼叫 INT 10H,AH=91H
檢查是否有載入倚天中文
載入狀態 => (AH != 91H 表有載入,AH = 91H 表未載入)
目前模式 => (DH),(bit7=0 表中文模式,bit7=1 表英文模式)
- INT 10H中断
- INT 10H中断
- INT 10H中断
- INT 10H中断
- INT 10 中断详解
- INT 10中断功能
- Int 10 中断功能
- INT 10中断功能
- int 10 中断
- INT 10H中断
- INT 10H 中断简介
- INT 10H 中断简介
- INT 10H 中断简介
- Int 10 中断功能 详解
- int 10h中断例程
- BIOS中断大全:“INT 10H ~ INT 1AH”
- DOS下的int 10h中断
- INT 10H中断功能详解
- DirectX11 高级着色器语言HLSL入门
- Keepalived原理与实战精讲
- Things you should do after UAT
- 电的传播速度
- javaEE 使用过滤器压缩响应内容
- int 10 中断
- VRRP协议介绍
- Efficient data transfer through zero copy
- IOS开发—手势操作(点击+滑动)
- bulk load关于分隔符的问题
- Linux开机过程的分析(关于bootsect.S)
- HDU 3038 How Many Answers Are Wrong (带权并查集)
- POJ 1270 Follwing Orders
- git 记住用户名密码