常用中断 cnblogs转载

来源:互联网 发布:知乎精神 编辑:程序博客网 时间:2024/05/16 10:07

http://www.cnblogs.com/huqingyu/archive/2005/02/19/105926.html


常用中断

INTAH功能调用参数返回参数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)
10 

设置光标大小 
(仅在文本显示模式下有效) 
(CH)0-3=光标起始处行号 
(CL)0-3=光标结束处行号
10 

设置光标位置 
BH=光标所在处的页号 
DH=行号 
DL=列号
10 

读光标当前所在位置 
BH=页号 
AX = 0000h (Phoenix BIOS) 
DH,DL=行,列 
CH = 开始扫描行号 
CL = 结束扫描行号
10 









读光笔当前所在位置 
(适用于EGA显示卡) 




 AH=0 光笔未打开 
      =1 光笔已打开,且以下参数有效: 

CX=象素行(图形) 
BX=象素列(图形) 
DH=字符行(文本) 
DL=字符列(文本)
105置显示页AL=页号 10 











屏幕初始化或向上卷动屏幕 





AL=上卷行数 
AL=0 :整个窗口空白 
AL!=0:屏幕底部为空白输入行 
BH=空白行属性 
CH=左上角行号 
CL=左上角列号 
DH=右下角行号 
DL=右下角列号
 10 











屏幕初始化或向下卷动屏幕 





AL=下卷行数 
AL=0 整个窗口空白 
AL!=0:屏幕顶部为空白输入行 
BH=空白行属性 
CH=左上角行号 
CL=左上角列号 
DH=右下角行号 
DL=右下角列号
 10 

读光标位置的字符和属性 
(仅文本显示模式下有效) 
BH=页号 
AH=光标所在处字符属性 
AL=光标所在处字符编码
10 





在光标位置显示字符及属性 


BH=页号 
AL=欲写字符的编码 
BL=欲写字符的属性 
CX=字符重复次数
 10 



在光标位置显示字符 

BH=显示页 
AL=欲写字符的编码 
CX=字符重复次数
 10 

置彩色调板(320×200图形)或边沿色/背景色 
(适用于CGA显示卡)
BH=0:文本模式下设置边沿色,图形模式下设置背景色,BL=将设置的颜色号; 
BH=1:设置调色板,BL=调色板号
 10 



写象素 
(仅在图形显示模式下有效) 
DX=行(0-199) 
CX=列(0-639) 
AL=点的前景色
 10 

读指定页面指定点的颜色 
BX=欲读点的页号 
DX=行(0-199) 
CX=列(0-639)
AL=读得该点的前景色 
10 

显示字符 
(光标前移一格,如到页尾则自动上卷一行,末行空白)
AL=欲写字符的编码 
BH=页号 
BL=字符的前景色号
 10 

取当前显示状态 AH=当前每行字符数 
BH=当前页号 
AL6~0=显示模式号 
AL7=1:上次转换未清屏 
AL7=0:上次转换前先清屏
10 










13 










显示字符串(适用AT) 










ES:BP=串地址 
CX=串长度 
DH,DL=起始行,列 
BH=页号 
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)130磁盘复位DL=物理驱动器号(0、1:软盘,80H、81H硬盘)CF=0:复位成功,此时AH=磁盘状态
CF=1:复位失败
131读磁盘状态DL=物理驱动器号(0、1:软盘,80H、81H硬盘)CF=0:读状态成功,此时AH=磁盘状态(*2*) 
CF=1:读状态失败
13 





读扇区状态 


AL=扇区数 
CH,CL=磁道号,扇区号1-63 
DH,DL=磁头号,驱动器号 
ES:BX=数据缓冲区地址

CF=0:读成功, 
       AH=0 
       AL=已读取的扇区数 
CF=1:读失败 
       
AH=出错代码 

13 



写指定的扇区 

同上 

CF=0:写成功 
       AH=0 
       AL=写入的扇区数 
CF=1:写失败 
       AH=出错代码
13 



检验磁盘扇区 

同上(ES:BX不设置) 

CF=0:成功 
     AH=0 
     AL=检验的扇区数 
CF=1:失败 
      
AH=出错代码

13 

对指定磁道格式化(硬盘格式化较复杂,这里只针对软盘格式化)AL=每磁道扇区数 
CH=磁道号 
DH,DL=磁头号,驱动器号 
ES:BX=指向扇区ID的地址指针 

CF=0:成功 
CF=1:失败,
AH=出错代码(*3*)

13 
取当前驱动器参数DL=物理驱动器号

CF=0:成功 
AH=0 
AL:一般为0 
BL=驱动器类型(AT/PS2 floppy only) 
CH=最大磁道号的低8位 
CL5~0=扇区号 
CL7~6=最大磁道号高2位 
DH=最大磁头号 
DL=驱动器数量 
ES:DI指向11个字节的磁盘参数表的首址指针 

CF=1:失败

13 
初始化双驱动器 

CF=0:初始化成功 
AH=磁盘状态 

CF=1:初始化失败

13 
查找柱面CH=磁道号 
CL5~0=扇区号 
CL7~6=磁道号高2位 
DH=磁头号 
DL=物理驱动器号
CF=0:查找成功 
AH=磁盘状态 

CF=1:查找失败
13 
D备用硬盘复位DL=物理驱动器号CF=0:复位成功 
AH=磁盘状态 

CF=1:复位失败
13 
10H检测硬盘是否准备好DL=物理驱动器号CF=0:准备好 
AH=磁盘状态 

CF=1:未准备好
13 
11H调整硬盘驱动器DL=物理驱动器号CF=0:成功 
AH=磁盘状态 

CF=1:失败
13 
14H硬盘驱动器内部诊断 CF=0:成功 
CF=1:失败
13 
15H取DASD磁盘类型DL=物理驱动器号CF=0:成功 
AH=DASD磁盘类型值(*4*) 

CF=1:失败
13 
16H取软盘变化DL=物理驱动器号CF=0:成功 
AH=软盘状态值(*5*) 

CF=1:失败
13 
17H设置磁盘格式化类型

DL=物理驱动器号 
AL=磁盘格式化类型(*4*)

CF=0:成功 
AH=磁盘状态 

CF=1:失败
13 
18H设置软盘介质类型DL=物理驱动器号 
CH=磁道数 
CL=每磁道扇区数 
ES:DI指向11个字节的介质参数表的首址指针 
CF=0:设置成功 
AH=磁盘状态 

CF=1:设置失败
13 
19H磁头复位DL=物理驱动器号 
CF=0:复位成功 
AH=磁盘状态 

CF=1:复位失败
14 

初始化串行通讯口 
AL=初始化参数 
DX=通讯口号(0,1)
AH=通读口状态 
AL=调制解调器状态
14 





向串行通讯口写字符 


AL=字符 
DX=通讯口号(0,1) 

写成功:(AH)7=0 
写失败:(AH)7=1 
(AH)0-6=通讯口状态
14 





从串行通讯口读字符 


DX=通讯口号(0,1) 


读成功:(AH)7=0 
       (AL)=字符 
写失败:(AH)7=1 
(AH)0-6=通讯口状态
14 

取通讯口状态 
DX=通讯口号(0,1) 
AH=通讯口状态 
AL=调制解调器状态
150启动盒式磁带马达  151停止盒式磁带马达  15 







磁带分块读 



ES:BX=数据传输区地址 
CX=字节数 


AH=状态字节 
AH=00 读成功 
  =01 冗余检验错 
  =02 无数据传输 
  =04 无引导
15 

磁带分块写 
DS:BX=数据传输区地址 
CX=字节数
同上 
160从键盘读字符 AL=字符ASCII码 
AH=字符的扫描码 
16 



读键盘缓冲区字符 

 ZF=0:键盘已准备好读、但键盘缓冲区指针并未改变 
     AL=字符ASCII码 
     AH=扫描码 
ZF=1: 键盘尚未准备好读,缓冲区空
162读转换键状态 AL=转换键状态值(*7*) 
AH大多数BIOS会改变其值
16 



设置按键速率和延迟时间AL=设置值 
0:默认 
1:增加延迟时间 
2:按键速率减慢一半 
3:增加延时且按键速率减慢一半 
4:关闭重发字符 
5:设置按键速率与延迟时间 
BH=延迟时间 
BL=按键速率
 16 



键盘写(将字符放回缓冲区)CL=欲写的字符ASCII码 
CH=字符的扫描码
AL=00H:成功 
AL=01H:缓冲区已满,操作失败
16 

10H

读扩展键盘 AL=读得字符的ASCII码 
AH=字符的扫描码 
16 

11H

读取扩展键盘状态 ZF=0:键盘已准备好读、但键盘缓冲区指针并未改变 
     AL=字符ASCII码 
     AH=扫描码 
ZF=1: 键盘尚未准备好读,缓冲区空
16 

12H

读取扩展转换键状态 AL=转换键状态值(*7*) 
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:超时
17 

初始化打印机 
回送状态字节
DX=打印机号(0~2) 
AH=打印机状态字节(同上) 
172取打印机状态DX=打印机号(0~2)AH=打印机状态字节(同上)1A 

读时钟 
 CH:CL=时:分 
DH:DL=秒:1/100秒
1A 

置时钟 
CH:CL=时:分 
DH:DL=秒:1/100秒
 1A 

读实时钟 
 CH:CL=时:分(BCD) 
DH:DL=秒:1/100秒(BCD)
1A6置报警时间CH:CL=时:分(BCD) 
DH:DL=秒:1/100秒(BCD)
 1A7清除报警  

注: 
(*1*)

例: 
AL=0 
串:char,char,... 
(光标返回起始位置) 

AL=1 
串:char,char,... 
(光标跟随移动) 

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

原创粉丝点击