一
.8088
中断向量
一.8088中断向量 |
||
0-3
4-7
8-B
C-F
10-13
14-17
18-1F
|
0
1
2
3
4
5
6,7
|
除以零
单步
(
用于
DEBUG)
(用于DEBUG)
非屏蔽中断
断点指令
溢出
打印屏幕
保留
|
二
.8259
中断向量
.8259中断向量 |
||
20-23
24-27
28-2B
2C-2F
30-33
34-37
38-3B
3C-3F
|
8
9
A
B
C
D
E
F
|
定时器
键盘
彩色
/
图形
/图形
异步通讯
(secondary)
异步通讯
(secondary)
(secondary)
异步通讯
(primary)
(primary)
硬磁盘
软磁盘
并行打印机
|
三
.BIOS
中断
.BIOS中断 |
||
40-43
44-47
48-4B
4C-4F
50-53
54-57
58-5B
5C-5F
60-63
64-67
68-6B
|
10
11
12
13
14
15
16
17
18
19
1A
|
屏幕显示
设备检验
测定存储器容量
磁盘
I/O
I/O
串行通讯口
I/O
I/O
盒式磁带
I/O
I/O
打印机输出
BASIC
入口代码
引导装入程序
日时钟
BASIC
入口代码
入口代码
引导装入程序
日时钟
引导装入程序
日时钟
|
四
.
提供给用户的中断
.提供给用户的中断 |
||
6C-6F
70-73
|
1B
1C
|
Ctrl-Break
控制的软中断
控制的软中断
定时器控制的软中断
定时器控制的软中断
|
五
.
数据表指针
.数据表指针 |
||
74-77
78-7B
7C-7F
|
1D
1E
1F
|
显示器参量表
软盘参数表
图形表
|
六
.DOS
中断
.DOS中断 |
||
80-83
84-87
88-8B
8C-8F
|
20
21
22
23
|
|
90-93
94-97
98-9B
9C-9F
A0-BB
BC-BF
BC-BF
C0-FF
C0-FF |
24
25
26
27
28-2E
2F
30-3F
|
|
|
||
100-17F
180-19F
1A0-1FF
200-217
218-3C3
3C4-3FF
|
40-5F
60-67
68-7F
80-85
86-F0
F1-FF
|
用户软中断
保留
由
BASIC
保留
BASIC保留
BASIC
中断
中断
保留
保留
|
AH
|
功 能
|
调 用 参 数
|
返 回 参 数
|
00
|
程序终止
(同INT 20H)
|
CS=程序段前缀
|
|
01
|
键盘输入并回显
|
AL=输入字符
|
|
02
|
显示输出
|
DL=输出字符
|
|
03
|
异步通讯输入
|
AL=输入数据
|
|
04
|
异步通讯输出
|
DL=输出数据
|
|
05
|
打印机输出
|
DL=输出字符
|
|
06
|
直接控制台I/O
|
DL=FF(输入) DL=字符(输入)
|
|
07
|
键盘输入(无回显)
|
AL=输入字符
|
|
08
|
键盘输入(无回显) 检测Ctrl-break
|
AL=输入字符
|
|
09
|
显示字符串
|
DS:DX=串地址"&"结束字符串
|
|
0A
|
键盘输入到缓冲区
|
DS:DX=缓冲区首地址(DS:DX)=缓冲区最大 (DS:DX+1)=实字符数际输入的字符数
|
|
0B
|
检验键盘状态
|
AL=00有输入,AL=FF无输入
|
|
0C
|
清除输入缓冲区并请求指定的输入功能
|
AL=输入功能号(1,6,7,8,A)
|
|
0D
|
磁盘复位
|
清除文件缓冲区
|
|
0E
|
指定当前缺省的磁盘驱动器
|
DL=驱动器号 AL=驱动器数0=A,1=B,...
|
|
0F
|
打开文件
|
DS:DX=FCB首地址
|
AL=00文件找到
AL=FF文件未找到
|
10
|
关闭文件
|
DS:DX=FCB首地址
|
AL=00目录修改成功
AL=FF目录中未找到文件
|
11
|
查找第一个目录项
|
DS:DX=FCB首地址
|
AL=00找到,AL=FF未找到
|
12
|
查找下一个目录项
|
DS:DX=FCB首地址(文件名中带*或?)
|
AL=00找到,AL=FF未找到
|
13
|
删除文件
|
DS:DX=FCB首地址
|
AL=00删除成功, AL=FF未找到
|
14
|
顺序读
|
DS:DX=FCB首地址
|
AL=00 读成功
=01 文件结束, 记录中无数据
=02 DTA空间不够
=03 文件结束,记录不完整
|
15
|
顺序写
|
DS:DX=FCB首地址
|
AL=00 写成功
=01 盘满
=02DTA空间不够
|
16
|
建文件
|
DS:DX=FCB首地址
|
AL=00 建立成功
=FF 无磁盘空间
|
17
|
文件改名
|
DS:DX=FCB
首地址(DS:DX+1)=旧文件名
(DS:DX+17)=新文件名
|
AL= 00 成功
= FF 未成功
|
19
|
取当前缺省磁盘
|
AL=缺省的驱动器
驱动器 号0=A,1=B,2=C,.
|
|
1A
|
置DTA地址
|
DS:DX=DTA地址
|
|
1B
|
取缺省驱动器FAT信息
|
AL=每簇的扇区数
DS:BX=FTA标识字节
CX=物理扇区的大小
DX=缺省驱动器的簇数
|
|
1C
|
取任一驱动器FAT信息
|
DL=驱动器号
|
同上
|
21
|
随机读
|
DS:DX=FCB首地址
|
AL=00读成功
=01文件结束
=缓冲区溢出
=03缓冲区不满
|
22
|
随机写
|
DS:DX=FCB首地址
|
AL=00成功
=01盘满
=02缓冲区溢出
|
23
|
测定大小
|
DS:DX=FCB首地址
|
AL=00成功
文件长度填入FCB
AL=FF未找到
|
24
|
设置随机记录号
|
DS:DX=FCB首地址
|
|
25
|
设置中断向量
|
DS:DX=中断向量
AL=中断类型号
|
|
26
|
建立程序段前缀
|
DX=新的程序段的段前缀
|
|
27
|
随机分块读
|
DS:DX=FCB首地址
CX=记录数
|
AL= 00读成功
= 01文件结束
= 02缓冲区太小,传输结束
= 03缓冲区不满
CX=读取的记录数
|
28
|
随机分块写
|
DS:DX=FCB首地址
CX=记录数
|
AL=00写成功
AL=01盘满
=02缓冲区溢出
|
29
|
分析文件名
|
ES:DI=FCB首地址
DS:SI=ASCII串
AL=控制分析标志
|
AL=00标准文件
=01多义文件
=FF非法盘符
|
2A
|
取日期
|
CX=年 DH:DL=月:日(二进制)
|
|
2B
|
设置日期
|
CX:DH:DL=年:月:日
|
AL=00成功, AL=FF无效
|
2C
|
取时间
|
CH:CL=时:分
DH:DL=秒:1/100秒
|
|
2D
|
设置时间
|
CH:CL=时:分
DH:DL=秒:1/100秒
|
AL=00成功
AL=FF无效
|
2E
|
置磁盘自动读写标志
|
AL=00关闭标志
AL=01打开标志
|
|
2F
|
取磁盘缓冲区的首址
|
ES:BX=缓冲区首址
|
|
30
|
取DOS版本号
|
AH=发行号,AL=版号
|
|
31
|
结束并驻留
|
AL=返回码, DX=驻留区大小
|
|
33
|
Ctrl-Break检测
|
AL=00取状态
AL=01置状态(DL)
DL=00关闭检测
=01打开检测
|
DL=00关闭Ctrl-Break检测
=01打开Ctrl-Break检测
|
35
|
取中断向量
|
AL=中断类型
|
ES:BX=中断向量
|
36
|
取空闲磁盘空间
|
DL=驱动器号
0=缺省,1=A,2=B…
… |
成功:AX=每簇扇区数,BX=有效簇数,CX=每扇区字节数,DX=总簇数
失败:AX=FFFF
|
38
|
置/取国家信息
|
DS:DX=信息区首地址
|
BX=国家码(国际电话前缀码)
AX=错误码
|
39
|
建立子目录(MKDIR)
|
DS:DX=ASCII 串地址
|
AX=错误码
|
3A
|
删除子目录(RMDIR)
|
DS:DX=ASCII 串地址
|
AX=错误码
|
3B
|
改变当前目录(CHDIR)
|
DS:DX=ASCII 串地址
|
AX=错误码
|
3C
|
建立文件
|
DS:DX=ASCII 串地址
CX=文件属性
|
成功:AX=文件代号
失败:AX=错误码
|
3D
|
打开文件
|
DS:DX=ASCII 串地址
AL=0读, =1写,=2读/写
|
成功:AX=文件代号
失败:AX=错误码
|
3E
|
关闭文件
|
BX=文件号
|
失败:AX=错误码
|
3F
|
读文件或设备
|
DS:DX=数据缓冲区地址
BX=文件代号
CX=读取的字节数
|
读成功:
AX=实际读入的字节数AX=0 已到文件尾
读出错:AX=错误码
|
40
|
写文件或设备
|
DS:DX=数据缓冲区地址
BX=文件代号
CX=写入的字节数
|
写成功:
AX=实际写入的字节数
写出错: AX=错误码
|
41
|
删除文件
|
DS:DX=ASCIIZ串地址
|
成功:AX=00,出错:AX=错误码(2,5)
|
42
|
移动文件指针
|
BX=文件代号
CX:DX=位移量
AL=移动方式(0,1,2)
|
成功:DX:AX=新指针位置
出错:AX=错误码
|
43
|
置/取文件属性
|
DS:DX=ASCII 串地址
AL=0取文件属性
AL=1置文件属性
CX=文件属性
|
成功:CX=文件属性
失败:AX=错误码
|
44
|
设备文件I/O控制
|
BX=文件代号
AL=0取状态
=1置状态DX
=2读数据
=3写数据
=6取输入状态
=7取输出状态
|
DX=设备信息
|
45
|
复制文件代号
|
BX=文件代号1
|
成功:AX=文件代号2
失败:AX=错误码
|
46
|
人工复制文件代号
|
BX=文件代号1
CX=文件代号2
|
失败:AX=错误码
|
47
|
取当前目录路径名
|
DL=驱动器号
DS:SI=ASCIIZ串地址
|
(DS:SI=ASCIIZ串)
失败:AX=错误码
|
48
|
分配内存空间
|
BX=申请内存容量
|
成功:AX=分配内存首址
失败:BX=最大可用空间
|
49
|
释放内存空间
|
ES=内存起始段地址
|
失败:AX=错误码
|
4A
|
调整已分配的存储块
|
ES=原内存起始地址
BX=再申请的容量
|
失败:BX=最大可用空间
AX=错误码
|
4B
|
装配/执行程序
|
DS:DX=ASCIIZ串地址
ES:BX=参数区首地址
AL=0装入执行
AL=3装入不执行
|
失败:AX=错误码
|
4C
|
带返回码结束
|
AL=返回码
|
|
4D
|
取返回码
|
AX=返回代码
|
|
4E
|
查找第一个匹配文件
|
DS:DX=ASCIIZ串地址
CX=属性
|
AX=出错代码(02,18)
|
4F
|
查找下一个匹配文件
|
DS:DX=ASCII 串地址
(文件名中带?或*)
|
AX=出错代码(18)
|
54
|
取盘自动读写标志
|
AL=当前标志值
|
|
56
|
文件改名
|
DS:DX=ASCII 串(旧)
ES:DI=ASCIIZ串(新)
|
AX=出错码(03,05, 17)
|
57
|
置/取文件目期和时间
|
BX=文件代号
AL=0读取
AL=1设置(DX:CX)
|
DX:CX=日期和时间
失败:AX=错误码
|
58
|
取/置分配策略码
|
AL=0取码
=1置码(BX)
BX=策略码
|
成功:AX=策略码
失败:AX=错误码
|
59
|
取扩充错误码
|
AX=扩充错误码
BH=错误类型
BL=建议的操作
CH=错误场所
|
|
5A
|
建立临时文件
|
CX=文件属性
DS:DX=ASCIIZ串地址
|
成功:AX=文件代号
失败:AX=错误码
|
5B
|
建立新文件
|
CX=文件属性
DS:DX=ASCIIZ串地址
|
成功:AX=文件代号
失败:AX=错误码
|
5C
|
控制文件存取
|
AL=00封锁,=01开启
BX=文件代号
CX:DX=文件位移
SI:DI=文件长度
|
失败:AX=错误码
|
62
|
取程序段前缀地址
|
BX=PSP地址
|
INT
|
AH
|
功能
|
调 用 参 数
|
返 回 参 数
|
10
|
0
|
设置显示方式
|
AL=00 40*25黑白方式
=01 40*25彩色方式
=02 80*25黑白方式
=03 80*25彩色方式
=04 320*200彩色图形方式
=05 320*200黑白图形方式
=06 640*200黑白图形方式
=07 80*25单色文本方式
=08 160*200 16色图形
=09 320*200 16色图形
=0A 640*200 16色图形
=0B 保留(EGA)
=0C 保留(EGA)
=0D 320*200彩色图形(EGA)
=0E 640*200彩色图形(EGA)
=0F 640*350黑白图形(EGA)
=10 640*350彩色图形(EGA)
=11 640*480单色图形(EGA)
=12 640*480 16色图形(EGA)
=13 320*200 256色图形(EGA)
=40 80*30彩色文本(CGE400)
=41 80*50彩色文本(CGE400)
=42 640*400彩色文本(CGE400)
|
|
10
|
1
|
置光标类型
|
(CH)0-3=光标起始行
(CL)0-3=光标结束行
|
|
10
|
2
|
置光标位置
|
BH=页号,DH,DL=行,列
|
|
10
|
3
|
读光标位置
|
BH=页号
|
CH=光标起始行,DH,DL=行,列
|
10
|
4
|
读光笔位置
|
AH=0光笔未触发,=1光笔触发CH=象素行, BX=象素列,DH=字符行,DL=字符列
|
|
10
|
5
|
置显示页
|
AL=页号
|
|
10
|
6
|
屏幕初始化或上卷
|
AL=上卷行数,AL=0整个窗口空白BH=卷入行属性,CH=左上角行号, CL=左上角列号,CH=右下角行号,DL=右下角列号
|
|
10
|
7
|
屏幕初始化或下卷
|
AL=下卷行数,AL=0整个窗口空白BH=卷入行属性,CH=左上角行号,CL=左上角列号,DH=右下角行号,DL=右下角列号
|
|
10
|
8
|
读光标位置的字符和属性
|
BH=显示页
|
AH=属性,AL=字符
|
10
|
9
|
在光标位置显示字符及其属性
|
BH=显示页,AL=字符,BL=属性
CX=字符重复次数
|
|
10
|
A
|
在光标位置显示字符
|
BH=显示页,AL=字符
CX=字符重复次数
|
|
10
|
B
|
置彩色调板(320*200图形)
|
BH=彩色调板ID
BL=和ID配套使用的颜色
|
|
10
|
C
|
写象素
|
DX=行(0-199) CX=列(0-639)
AL=象素值
|
|
10
|
D
|
读象素
|
DX=行(0-199) CX=列(0-639)
|
AL=象素值
|
10
|
E
|
显示字符(光标前移)
|
AL=字符,BL=前景色
|
|
10
|
F
|
取当前显示方式
|
AH=字符列数,AL=显示方式
|
|
10
|
13
|
显示字符串(适用AT)
|
ES:BP=串地址,CX=串长度
DH,DL=起始行,列,BH=页号
AL=0,BL=属性
串:char,char...
AL=1,BL=属性
串:char,char...
AL=2
串:char,attr,char, attr,...
AL=3
串:char,attr,char,attr,...
|
光标返回起始位置
光标跟随移动
光标返回起始位置
光标跟随移动
|
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)
|
||
13
|
0
|
软盘系统复位
|
||
13
|
1
|
读软盘状态
|
AL=状态字节
|
|
13
|
2
|
读磁盘
|
AL=扇区数
CH,CL=磁道号,扇区号
DH,DL=磁头号,驱动器号
ES:BX=数据缓冲区地址
|
读成功:AH=0
AL=读取的扇区数
读失败:
AH=出错代码
|
13
|
3
|
写磁盘
|
同上
|
写成功:AH=0 AL=写入的扇区数
写失败: AH=出错代码
|
13
|
4
|
检验磁盘扇区
|
同上(ES:BX不设置)
|
成功:AH=0 AL=检验的扇区数
失败:AH=出错代码
|
13
|
5
|
格式化盘磁道
|
ES:BX=磁道地址
|
成功:AH=0 失败:AH=出错代码
|
14
|
0
|
初始化串行通讯口
|
AL= 初始化参数
DX=通讯口号(0,1)
|
AH = 通讯口状态
AL = 调制解调器状态
|
14
|
1
|
向串行通讯口写字符
|
AL=字符,DX=通讯口号(0,1)
|
写成功:(AH)7=0
写失败:(AH)7=1
(AH)0-5=通讯口状态
|
14
|
2
|
从串行通讯口读字符
|
DX=通讯口号(0,1)
|
读成功:(AH)7=0,(AL)=字符
读失败:(AH)7=1,(AH)0-6=通讯口状态
|
14
|
3
|
取通讯口状态
|
DX=通讯口号(0,1)
|
AH=通讯口状态
AL=调制解调器状态
|
15
|
0
|
启动盒式磁带马达
|
||
15
|
1
|
停止盒式磁带马达
|
||
15
|
2
|
磁带分块读
|
ES:BX=数据转输区地址
CX=字节数
|
AH=状态字节
AH=00读成功,=01冗余检验错
=02无数据传输,=04无引导,=80非法命令
|
15
|
3
|
磁带分块写
|
DS:BX=数据传输区地址
CX=字节数
|
AH=状态字节(同上)
|
16
|
0
|
从键盘读字符
|
AL=字符码,AH=扫描码
|
|
16
|
1
|
读键盘缓冲区字符
|
ZF=0 AL=字符码,AH=扫描码
ZF=1 缓冲区空
|
|
16
|
2
|
取键盘状态字节
|
AL=键盘状态字节
|
|
17
|
0
|
打印字符,回送状态字节
|
AL=字符,DX=打印机号
|
AH=打印机状态字节
|
17
|
1
|
初始化打印机,回送状态字节
|
DX=打印机号
|
AH=打印机状态字节
|
17
|
2
|
取状态字节
|
DX=打印机号
|
AH=打印机状态字节
|
1A
|
0
|
读时钟
|
CH:CL=时:分
DH:DL=秒:1/100秒
|
|
1A
|
1
|
置时钟
|
CH:CL=时:分,DH:DL=秒:1/100秒
|
|
1A
|
2
|
读实时钟
|
CH:CL=时:分(BCD)
DH:DL=秒:1/100秒(BCD)
|
|
1A
|
6
|
置报警时间
|
CH:CL=时:分(BCD)
DH:DL=秒:1/100秒(BCD)
|
|
1A
|
7
|
清除报警
|