天天看点

常用中断

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 >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