日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

BIOS INT 10中断功能

發(fā)布時(shí)間:2025/6/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BIOS INT 10中断功能 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

INT 10H 是由 BIOS 對(duì)屏幕及顯示器所提供的服務(wù)程序,而后倚天公司針對(duì)倚天中文提供了許多服務(wù)程序,這些服務(wù)程序也加掛在 INT 10H 內(nèi)。使用 INT 10H 中斷服務(wù)程序時(shí),先指定 AH 寄存器為下表編號(hào)其中之一,該編號(hào)表示欲調(diào)用的功用,而其他寄存器的詳細(xì)說(shuō)明,參考表后文字,當(dāng)一切設(shè)定好之后再調(diào)用 INT 10H。底下是它們的說(shuō)明:

AH功 能調(diào)用參數(shù)返回參數(shù) / 注釋
1置光標(biāo)類(lèi)型(CH)0―3 = 光標(biāo)開(kāi)始行
  (CL)0―3 = 光標(biāo)結(jié)束行
?
2置光標(biāo)位置BH = 頁(yè)號(hào)?
  DH = 行
  DL = 列  
?
3讀光標(biāo)位置BH = 頁(yè)號(hào)CH = 光標(biāo)開(kāi)始行
 CL = 光標(biāo)結(jié)束行
 DH = 行
 DL = 列
4置顯示頁(yè)AL = 顯示頁(yè)號(hào)?
5屏幕初始化或上卷??
6屏幕初始化或上卷AL = 上卷行數(shù)?
  AL =0全屏幕為空白?
  BH = 卷入行屬性
  CH = 左上角行號(hào)?
  CL = 左上角列號(hào)?
  DH = 右下角行號(hào)?
  DL = 右下角列號(hào)
?
7屏幕初始化或下卷AL = 下卷行數(shù)
  AL = 0全屏幕為空白?
  BH = 卷入行屬性
  CH = 左上角行號(hào)?
  CL = 左上角列號(hào)?
  DH = 右下角行號(hào)?
  DL = 右下角列號(hào)
?
8讀光標(biāo)位置的屬性和字符BH = 顯示頁(yè)AH = 屬性
 AL = 字符
9在光標(biāo)位置顯示字符及其屬性BH = 顯示頁(yè)
  AL = 字符
  BL = 屬性
  CX = 字符重復(fù)次數(shù)
?
A在光標(biāo)位置只顯示字符BH = 顯示頁(yè)
  AL = 字符?
  CX = 字符重復(fù)次數(shù)
?
E顯示字符(光標(biāo)前移)AL = 字符
  BL = 前景色
光標(biāo)跟隨字符移動(dòng)
13顯示字符串ES:BP = 串地址?
  CX = 串長(zhǎng)度?
  DH, DL = 起始行列?
  BH = 頁(yè)號(hào)
  AL = 0,BL = 屬性?
  串:Char,char,……,char
  AL = 1,BL = 屬性?
  串:Char,char,……,char?
  AL = 2?
  串:Char,attr,……,char,attr?
  AL = 3?
  串:Char,attr,……,char,attr

?





 光標(biāo)返回起始位置

 光標(biāo)跟隨移動(dòng)


 光標(biāo)返回起始位置


 光標(biāo)跟隨串移動(dòng)


AH=00H

AH=00/INT 10H 是用來(lái)設(shè)定顯示模式的服務(wù)程序,AL 寄存器表示欲設(shè)定的模式:

AL文字/圖形分辨率顏色
00文字40*252
01文字40*2516
02文字80*252
03文字80*2516
04圖形320*2002
05圖形320*2004
06圖形640*2002

AH=01H

您可以把光標(biāo)想成一個(gè)小的矩形,平時(shí)這個(gè)矩形扁平位于某字底部,但藉由此功能可以改變其大小與位置。光標(biāo)起始處與終止處分別由 CL 與 CH 的 0 到 4 位表示,參考下圖:

而 CH 的第 7 位必須是 0,第 5、6 位表示光標(biāo)屬性:

位 6???? 位 5????? 屬性0???????? 0???????? 正常0???????? 1???????? 隱形1???????? 01???????? 1???????? 閃爍緩慢

AH=02H

此功能是設(shè)定光標(biāo)位置,位置用 DH、DL 表示,DH 表示列號(hào),DL 表示行號(hào)。由左至右稱(chēng)之為『列』,屏幕最上面一列為第零列,緊靠第零列的下一列稱(chēng)為第一列……;由上而下稱(chēng)之為『行』,屏幕最左邊一行稱(chēng)之為第零行,緊靠第零行右邊的一行為第一行。故最左邊,最上面的位置為 DH=0 且 DL=0;最左邊第二列,DH=1,DL=0。如果是文字模式時(shí),BH 為欲改變光標(biāo)位置的顯示頁(yè),如果是圖形模式,BH 要設(shè)為 0。

以行列來(lái)說(shuō)明 DH、DL 之意義,小木偶常常搞混,底下以座標(biāo)方式解釋。在文字模式下,字符的位置類(lèi)似數(shù)學(xué)直角座標(biāo)系的座標(biāo),但是 Y 軸方向相反,Y 軸是以屏幕最上面為零,越下面越大,直到 24 為止,存于 DH 內(nèi)。X 軸和直角座標(biāo)系相同,越右邊越大,存于 DL 內(nèi),其最大值視顯示模式而變。

AH=03H

AH=03H/INT 10H 這個(gè)中斷服務(wù)程序返回時(shí),會(huì)在 DX 里面有光標(biāo)的行列位置,CX 內(nèi)有光標(biāo)的大小,DX、CX 之?dāng)?shù)值所代表的意義和 AH=02H/INT 10H、AH=01H/INT 10H 相同。

AH=04H

此功能是探測(cè)光筆之位置,似乎只有 CGA 卡有接上光筆??

AH=05H

這個(gè)功能是把指定的顯示頁(yè)顯示于屏幕上,欲顯示的顯示頁(yè)于 AL 寄存器中指定。此功能只能在文字模式下才能發(fā)生作用。

AH=06H/07H

這個(gè)服務(wù)程序的功用是把某一個(gè)設(shè)定好的矩形區(qū)域內(nèi)的文字向上或向下移動(dòng)。先說(shuō)明向上移動(dòng),即調(diào)用 AH=06H/INT 10H。當(dāng)此服務(wù)程序工作時(shí),會(huì)使矩形區(qū)域的文字向上移動(dòng),而矩形區(qū)域底端移進(jìn)空格列。向上移動(dòng)的列數(shù)存入 AL 中 ( 如果 AL 為零,表示使矩形區(qū)域的所有列均向上移 ),底端移入空格列的屬性存于 BH,矩形區(qū)域是藉由 CX、DX 來(lái)設(shè)定左上角與右上角的座標(biāo),左上角的行與列分別由 CL、CH 設(shè)定,右下角的行與列由 DL、DH 設(shè)定。

AH=07H/INT 10H 和 AH=06H/INT 10H 相似,只是卷動(dòng)方像不同而已。

AH=08H

這個(gè)服務(wù)程序是用來(lái)取得光標(biāo)所在位置的字符及屬性,調(diào)用前,BH 表示欲讀取之顯示頁(yè),返回時(shí),AL 為該位置之 ASCII 字符,AH 為其屬性。有關(guān)屬性的說(shuō)明,請(qǐng)參考注一。

AH=09H

這個(gè)功能是在光標(biāo)位置顯示字符,所要顯示字符的 ASCII 碼存于 AL 寄存器,字符重復(fù)次數(shù)存于 CX 寄存器,顯示頁(yè)存于 BH 寄存器,屬性存于 BL 寄存器,其屬性使用與 AH=08/INT 10H 一樣。

AH=0AH

這個(gè)功能和 AH=09H/INT 10H 一樣,差別在 AH=0AH 只能寫(xiě)入一個(gè)字符,而且不能改變字符屬性。

AH=0BH

這個(gè)服務(wù)程序是選擇調(diào)色盤(pán)。顯示模式 5 是 320*200 的圖形模式,最多可以顯示 4 種顏色,這四種顏色的意思是最多可以『同時(shí)』顯示一種背景色及三種前景色,而這三種前景色有兩種方式可供選擇,因此事實(shí)上,在顯示模式 5 有兩種調(diào)色盤(pán)可供選擇。就好像您去買(mǎi) 12 種顏色的水彩,但可在調(diào)色盤(pán)上以任意比例搭配出許多種顏色。

調(diào)色盤(pán) 0 的三色是綠、紅、黃;調(diào)色盤(pán) 1 的三色是青、紫紅、白。背景色有 16 六種可供選擇,這 16 種就是注一的 16 色。調(diào)用此中斷時(shí),先決定要設(shè)定背景色抑或調(diào)色盤(pán),

  • 要設(shè)定背景色時(shí),則使 BH 為 0,再使 BL 之?dāng)?shù)值為 0 到 0fh 之間表示注一的 16 色之一。
  • 要設(shè)定調(diào)色盤(pán)時(shí),則使 BH 為 1。再設(shè)定 BL 為零或一表示選擇那一種調(diào)色盤(pán)。

背景色只有在前景色為 0 時(shí)才會(huì)顯現(xiàn)出來(lái)。

AH=0CH

AH=0Ch/INT 10H 是在繪圖模式中顯示一點(diǎn) ( 也就是寫(xiě)入點(diǎn)像,write graphics pixel ),而 AH=0DH/INT 10H 則是讀取點(diǎn)像 ( read graphics pixel )。

寫(xiě)入時(shí),要寫(xiě)入位置 X 座標(biāo)存于 CX 寄存器,Y 座標(biāo)存于 DX 寄存器,顏色存于 AL 寄存器。和文字模式相同,螢光幕上的 Y 座標(biāo)是最上面一列為零,越下面越大,X 座標(biāo)則和數(shù)學(xué)的定義相同。CX、DX、AL 值之范圍與顯示模式有關(guān):

顯示模式X 座標(biāo)Y 座標(biāo)顏色
40~3190~1990、1
50~3190~1990~3
60~6390~1990、1

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

AH=0EH

這個(gè)子程序是使顯示器像打字機(jī)一樣的顯示字符來(lái),在前面用 AH=09H/INT 10H 和 AH=0AH/INT 10H 都可以在螢光幕上顯示字符,但是這兩奘方式顯示字符之后,光標(biāo)位置并不移動(dòng),而 AH=0EH/INT 10H 則會(huì)使光標(biāo)位置移動(dòng),每顯示一個(gè)字符,光標(biāo)會(huì)往右移一格,假如已經(jīng)到最右邊了,則光標(biāo)會(huì)移到最左邊并移到下一列,假如已經(jīng)移到最下面一列的最右邊,則屏幕會(huì)向上卷動(dòng)。

AL 寄存器存要顯示的字符,BH 為目前的顯示頁(yè),如果是在圖形模式,則 BH 須設(shè)為 0,假如是在圖形模式下,也可以設(shè)定 BL 來(lái)表示文字的顏色,文字模式下的 BL 則無(wú)功能。

AH=0FH

這個(gè)服務(wù)程序是得到目前的顯示模式,調(diào)用前只需使 AH 設(shè)為 0fh,當(dāng)由 INT 10H 返回時(shí),顯示模式存于 AL 寄存器 ( 參考 AH=00H/INT 10H 的顯示模式表 ),目前的顯示頁(yè)存于 BH 寄存器,總字符行數(shù)存于 AH 寄存器。


注一:?所謂屬性是指字符的顏色、背景顏色、是否閃爍、有沒(méi)有底線等性質(zhì)。在彩色顯示卡 ( CGA/EGA/VGA 等 ) 的文字模式中,顏色是用 4 個(gè)位表示,故可以表現(xiàn)出 16 種顏色,如下表:

二進(jìn)制數(shù)顏色例子二進(jìn)制數(shù)顏色例子
0000黑色black1000灰色gray
0001藍(lán)色blue1001淡藍(lán)色light blue
0010綠色green1010淡綠色light green
0011青色cyan1000淡青色light cyan
0100紅色red1100淡紅色light red
0101紫紅色magenta1101淡紫紅色light magenta
0110棕色brown1110黃色yellow
0111銀色light gray1111白色white

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

但是在單色顯示器里,如 MDA 和 Hercules 卡中,這些顏色表并無(wú)意義,所以屬性解釋方式不同,請(qǐng)看下表:

數(shù)值屬性
00H空格,不顯示任何數(shù)據(jù)
77H顯示白色方塊
07H正常的黑底白字
70H反白的白底黑字
01H加底線

AH=0x13

  • 描述:??
  • ????以電傳打字機(jī)的方式顯示字符串??
  • 接受參數(shù):??
  • ????AH??????????0x13??
  • ????AL??????????顯示模式??
  • ????BH??????????視頻頁(yè)??
  • ????BL??????????屬性值(如果AL=0x00或0x01)??
  • ????CX??????????字符串的長(zhǎng)度??
  • ????DH,DL???????屏幕上顯示起始位置的行、列值??
  • ????ES:BP???????字符串的段:偏移地址??
  • 返回值:??
  • ????無(wú)??
  • 顯示模式(AL):??
  • ????0x00:字符串只包含字符碼,顯示之后不更新光標(biāo)位置,屬性值在BL中??
  • ????0x01:字符串只包含字符碼,顯示之后更新光標(biāo)位置,屬性值在BL中??
  • ????0x02:字符串包含字符碼及屬性值,顯示之后不更新光標(biāo)位置??
  • ????0x03:字符串包含字符碼及屬性值,顯示之后更新光標(biāo)位置??







  • 總結(jié)

    以上是生活随笔為你收集整理的BIOS INT 10中断功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。