天天看點

常用中斷

<col>

int

ah

功能

調用參數

傳回參數

10

設定顯示方式:

al6~0為顯示模式号,1.al7=0:先清屏,再轉為新模式

2.al7=1:不清屏,直接轉為新模式

al=00 40×25黑白方式

al=01 40×25彩色方式

al=02 80×25黑白方式

al=03 80×25彩色方式

al=04 320×200彩色圖形方式

al=05 320×200黑白圖形方式

al=06 320×200黑白圖形方式

al=07 80×25單色文本方式

al=08 160×200 16色圖形 (pcjr)

al=09 320×200 16色圖形 (pcjr)

al=0a 640×200 16色圖形 (pcjr)

al=0b 保留(ega)

al=0c 保留(ega)

al=0d 320×200 彩色圖形 (ega)

al=0e 640×200 彩色圖形 (ega)

al=0f 640×350 黑白圖形 (ega)

al=10 640×350 彩色圖形 (ega)

al=11 640×480 單色圖形 (ega)

al=12 640×480 16色圖形 (ega)

al=13 320×200 256色圖形 (ega)

al=40 80×30 彩色文本(cge400)

al=41 80×50 彩色文本(cge400)

al=42 640×400 彩色圖形(cge400)

1

設定光标大小

(僅在文本顯示模式下有效)

(ch)0-3=光标起始處行号

(cl)0-3=光标結束處行号

2

設定光标位置

bh=光标所在處的頁号

dh=行号

dl=列号

3

讀光标目前所在位置

bh=頁号

ax = 0000h (phoenix bios)

dh,dl=行,列

ch = 開始掃描行号

cl = 結束掃描行号

4

讀光筆目前所在位置

(适用于ega顯示卡)

ah=0 光筆未打開

      =1 光筆已打開,且以下參數有效:

cx=象素行(圖形)

bx=象素列(圖形)

dh=字元行(文本)

dl=字元列(文本)

5

置顯示頁

al=頁号

6

螢幕初始化或向上卷動螢幕

al=上卷行數

al=0 :整個視窗空白

al!=0:螢幕底部為空白輸入行

bh=空白行屬性

ch=左上角行号

cl=左上角列号

dh=右下角行号

dl=右下角列号

7

螢幕初始化或向下卷動螢幕

al=下卷行數

al=0 整個視窗空白

al!=0:螢幕頂部為空白輸入行

8

讀光标位置的字元和屬性

(僅文本顯示模式下有效)

ah=光标所在處字元屬性

al=光标所在處字元編碼

9

在光标位置顯示字元及屬性

al=欲寫字元的編碼

bl=欲寫字元的屬性

cx=字元重複次數

a

在光标位置顯示字元

bh=顯示頁

b

置彩色調闆(320×200圖形)或邊沿色/背景色

(适用于cga顯示卡)

bh=0:文本模式下設定邊沿色,圖形模式下設定背景色,bl=将設定的顔色号;

bh=1:設定調色闆,bl=調色闆号

c

寫象素

(僅在圖形顯示模式下有效)

dx=行(0-199)

cx=列(0-639)

al=點的前景色

d

讀指定頁面指定點的顔色

bx=欲讀點的頁号

al=讀得該點的前景色

e

顯示字元

(光标前移一格,如到頁尾則自動上卷一行,末行空白)

bl=字元的前景色号

f

取目前顯示狀态

ah=目前每行字元數

bh=目前頁号

al6~0=顯示模式号

al7=1:上次轉換未清屏

al7=0:上次轉換前先清屏

13

顯示字元串(适用at)

es:bp=串位址

cx=串長度

dh,dl=起始行,列

al0=0:光标傳回起始位置

al0=1:光标跟随移動

al1=1:包含字元及屬性,此時bl訓示字元屬性

al2~7:保留(0)

(*1*)

11

裝置檢驗

ax=傳回值

bit0=1,配有磁盤

bit1=1,80287協處理器

bit4,5=01,40×25bw(彩色闆)

      =10,80×25bw(彩色闆)

      =11,80×25bw(黑白闆)

bit6,7=羅盤驅動器

bit9,10,11=rs-232闆号

bit12=遊戲擴充卡

bit13=串行列印機

bit14,15=列印機号

12

測定存儲器容量

ax=位元組數(kb)

磁盤複位

dl=實體驅動器号(0、1:軟碟,80h、81h硬碟)

cf=0:複位成功,此時ah=磁盤狀态

cf=1:複位失敗

讀磁盤狀态

cf=0:讀狀态成功,此時ah=磁盤狀态(*2*)

cf=1:讀狀态失敗

讀扇區狀态

al=扇區數

ch,cl=磁道号,扇區号1-63

dh,dl=磁頭号,驅動器号

es:bx=資料緩沖區位址

cf=0:讀成功,

       ah=0

       al=已讀取的扇區數

cf=1:讀失敗

       ah=出錯代碼

寫指定的扇區

同上

cf=0:寫成功

       al=寫入的扇區數

cf=1:寫失敗

檢驗磁盤扇區

同上(es:bx不設定)

cf=0:成功

     ah=0

     al=檢驗的扇區數

cf=1:失敗

      ah=出錯代碼

對指定磁道格式化(硬碟格式化較複雜,這裡隻針對軟碟格式化)

al=每磁道扇區數

ch=磁道号

es:bx=指向扇區id的位址指針

cf=1:失敗,ah=出錯代碼(*3*)

取目前驅動器參數

dl=實體驅動器号

ah=0

al:一般為0

bl=驅動器類型(at/ps2 floppy only)

ch=最大磁道号的低8位

cl5~0=扇區号

cl7~6=最大磁道号高2位

dh=最大磁頭号

dl=驅動器數量

es:di指向11個位元組的磁盤參數表的首址指針

初始化雙驅動器

cf=0:初始化成功

ah=磁盤狀态

cf=1:初始化失敗

查找柱面

cl7~6=磁道号高2位

dh=磁頭号

cf=0:查找成功

cf=1:查找失敗

備用硬碟複位

cf=0:複位成功

10h

檢測硬碟是否準備好

cf=0:準備好

cf=1:未準備好

11h

調整硬碟驅動器

14h

硬碟驅動器内部診斷

15h

取dasd磁盤類型

ah=dasd磁盤類型值(*4*)

16h

取軟碟變化

ah=軟碟狀态值(*5*)

17h

設定磁盤格式化類型

al=磁盤格式化類型(*4*)

18h

設定軟碟媒體類型

ch=磁道數

cl=每磁道扇區數

es:di指向11個位元組的媒體參數表的首址指針

cf=0:設定成功

cf=1:設定失敗

19h

磁頭複位

14

初始化串行通訊口

al=初始化參數

dx=通訊口号(0,1)

ah=通讀口狀态

al=數據機狀态

向串行通訊口寫字元

al=字元

寫成功:(ah)7=0

寫失敗:(ah)7=1

(ah)0-6=通訊口狀态

從串行通訊口讀字元

讀成功:(ah)7=0

       (al)=字元

取通訊口狀态

ah=通訊口狀态

15

啟動盒式錄音帶馬達

停止盒式錄音帶馬達

錄音帶分塊讀

es:bx=資料傳輸區位址

cx=位元組數

ah=狀态位元組

ah=00 讀成功

  =01 備援檢驗錯

  =02 無資料傳輸

  =04 無引導

錄音帶分塊寫

ds:bx=資料傳輸區位址

16

從鍵盤讀字元

al=字元ascii碼

ah=字元的掃描碼

讀鍵盤緩沖區字元

zf=0:鍵盤已準備好讀、但鍵盤緩沖區指針并未改變

     al=字元ascii碼

     ah=掃描碼

zf=1: 鍵盤尚未準備好讀,緩沖區空

讀轉換鍵狀态

al=轉換鍵狀态值(*7*)

ah大多數bios會改變其值

設定按鍵速率和延遲時間

al=設定值

0:預設

1:增加延遲時間

2:按鍵速率減慢一半

3:增加延時且按鍵速率減慢一半

4:關閉重發字元

5:設定按鍵速率與延遲時間

bh=延遲時間

bl=按鍵速率

鍵盤寫(将字元放回緩沖區)

cl=欲寫的字元ascii碼

ch=字元的掃描碼

al=00h:成功

al=01h:緩沖區已滿,操作失敗

讀擴充鍵盤

al=讀得字元的ascii碼

讀取擴充鍵盤狀态

12h

讀取擴充轉換鍵狀态

ah=擴充轉換鍵狀态值(*8*)

17

列印一個字元

回送狀态位元組

al=欲列印字元的ascii碼

dx= 列印機号(0~2)

ah=列印機狀态位元組

ah7=0:列印機忙

ah7=1:列印機空閑

ah6=1:列印機響應

ah5=1:無列印紙

ah4=1:已聯機

ah3=1:出錯

ah2~1:保留

ah0=1:逾時

初始化列印機

dx=列印機号(0~2)

ah=列印機狀态位元組(同上)

取列印機狀态

1a

讀時鐘

ch:cl=時:分

dh:dl=秒:1/100秒

置時鐘

讀實時鐘

ch:cl=時:分(bcd)

dh:dl=秒:1/100秒(bcd)

置報警時間

清除報警

注:

例:

al=0

串:char,char,...

(光标傳回起始位置)

al=1

(光标跟随移動)

al=2,bl=屬性串:char,attr,char,attr,...

al=3,bl=屬性串:char,attr,char,attr,...

(*2*)

values for disk operation status:

00h    successful completion

01h    invalid function in ah or invalid parameter

02h    address mark not found

03h    disk write-protected

04h    sector not found/read error

05h    reset failed (hard disk)

05h    data did not verify correctly (ti professional pc)

06h    disk changed (floppy)

07h    drive parameter activity failed (hard disk)

08h    dma overrun

09h    data boundary error (attempted dma across 64k boundary or &gt;80h sectors)

0ah    bad sector detected (hard disk)

0bh    bad track detected (hard disk)

0ch    unsupported track or invalid media

0dh    invalid number of sectors on format (ps/2 hard disk)

0eh    control data address mark detected (hard disk)

0fh    dma arbitration level out of range (hard disk)

10h    uncorrectable crc or ecc error on read

11h    data ecc corrected (hard disk)

20h    controller failure

31h    no media in drive (ibm/ms int 13 extensions)

32h    incorrect drive type stored in cmos (compaq)

40h    seek failed

80h    timeout (not ready)

aah    drive not ready (hard disk)

b0h    volume not locked in drive (int 13 extensions)

b1h    volume locked in drive (int 13 extensions)

b2h    volume not removable (int 13 extensions)

b3h    volume in use (int 13 extensions)

b4h    lock count exceeded (int 13 extensions)

b5h    valid eject request failed (int 13 extensions)

bbh    undefined error (hard disk)

cch    write fault (hard disk)

e0h    status register error (hard disk)

ffh    sense operation failed (hard disk)

(*3*)軟碟格式化錯誤資訊

offset  size    description     (table 0212)

00h    byte    track number

01h    byte    head number (0-based)

02h    byte    sector number

03h    byte    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)

(*4*)dasd磁盤類型值

00h no such drive 磁盤驅動器不存在

01h floppy without change-line support 磁盤驅動器不能改變目前檢測

02h floppy (or other removable drive) with change-line support 磁盤驅動器能改變目前檢測

03h hard disk 硬碟

(*5*)軟碟狀态值

00h 軟碟無變化

01h invalid command (syquest) 無效的軟碟參數

06h change line active or not supported 軟碟已改變

80h drive not ready or not present 驅動器未準備好

(*6*)磁盤格式化類型

01h = 320/360k disk in 360k drive

02h = 320/360k disk in 1.2m drive

03h = 1.2m disk in 1.2m drive

04h = 720k disk in 720k or 1.44m drive

(*7*)轉換鍵狀态值

bitfields for keyboard shift flags:

bit(s) description (table 0556)

7 insert active

6 capslock active

5 numlock active

4 scrolllock active

3 alt key pressed (either alt on 101/102-key keyboards)

2 ctrl key pressed (either ctrl on 101/102-key keyboards)

1 left shift key pressed

0 right shift key pressed

(*8*)擴充轉換鍵狀态值

bitfields for keyboard shift flags 2:

bit(s) description (table 0562)

7 sysreq key pressed (sysreq is often labeled sysrq)

6 capslock pressed

5 numlock pressed

4 scrolllock pressed

3 right alt key pressed

2 right ctrl key pressed

1 left alt key pressed

0 left ctrl key pressed