DOS(disk operating system)DOS为层次型模块化结构的操作系统是由三个部分的程序文件和一个BOOT 引导程序构成的

三个程序文件分别是::

1.IO.SYS                                             输入输出管理系统

输入输出系统包括固化在ROM中的基本输入输出系统(BIOS)和系统盘上的BIOS接口模块IBMBIO.COM(IO.SYS)。这两部分是DOS的最里层,用于驱动和控制各种外部设备的工作。它们的具体功能是检测系统中设备的状态;初始化附加设备;使磁盘系统复位(使驱动器加载);解释CONFIG.SYS并设置系统环境,加载可安装的设备驱动程序;以及给引入内存的IBMDOS.COM重新定位等等。IBMBIO.COM是一个隐含文件,通常连续地驻留在磁盘数据区的起始部分。该模块在系统启动时常驻内存,提供DOS内核访问的常驻设备驱动程序。

2.MSDOS.SYS                         文件管理系统

该模块是DOS的核心,提供系统与用户的高级接口。其主要任务有:

负责管理所有的磁盘文件;

负责磁盘空间分配及其他系统资源管理;

负责DOS与外层模块的联系等。

IBMDOS.COM也是隐含文件,系统启动后该模块常驻内存。

  3.COMMAND.COM                   命令处理系统

    该模块是用户和DOS之间的直接界面,是DOS的最外层,它负责接收、解释并执行用户输入的命令。该文件是DOS系统不可缺少的一个重要模块,包含以下内         容:DOS系统的所有内部命令;文件处理、中断处理、出错处理等子程序;负责装入和执行外部命令的子程序。 COMMAND.COM以一般文件的形式驻留在磁盘上。在DOS启动之后,它的一部分常驻内存,另一部分是可覆盖部分,在需要时从磁盘上调入内存。因此在DOS工作的过程中,DOS启动盘上的COMMAND.COM应该一直存在,准备随时被访问,以装入该程序被覆盖掉的部分。


附:引导程序(引导扇 Boot Sector)


引导程序在DOS的每次启动时自动装入内存并获得控制权,由它负责把DOS的其他部分装入内存。 DOS的引导程序驻留于系统磁盘的逻辑0号扇区(0面0道1扇区),数据量为一个扇区(512字节)。它由磁盘格式化命令FORMAT生成,其在DOS启动时的作用是检查磁盘是否为系统盘,若是,则引导DOS进入内存,否则给出出错信息;主要检查磁盘上是否存在DOS的两个系统文件IBMBIO.COM(IO.SYS)和IBMDOS.COM(MS-DOS.SYS),如果这两个文件确实存在,就被引导程序读入内存,否则给出出错信息。



DOS和BIOS提供了大量的可供用户使用的系统服务程序

     ROMBIOS是固化在ROM中的基本输入/输出程序。它直接对外设进行设备升级的控制,包括系统测试、初始化引导程序、控制IO设备的服务程序


DOS中的IO。SYS基本输入输出管理模块通过ROMBIOS控制管理外设。DOS与ROMBIOS之间的关系

MSDOS。SYS=========》IO。SYS===========》ROMBIOS===============》外设

一般情况下用户控制硬件的方法

1.应用高级语言的相应功能语句进行控制,但是高级语言中的IO语句比较少执行速度慢

2.应用DOS提供的近百种IO功能服务程序,编程者无须对应件由很高的造诣,即可使用,这是一种高层次的调用,使用DOS调用,编程简单,调试方便,可移植性好

3.应用ROMBIOS的程序调用控制硬件,只是低层次的控制,BIOS 固化在ROM中,不依赖与DOS。使用BIOS软终端调用子程序客直接控制。中断调用可用中断指令“INT N”实现

4.直接使用汇编语言

当类型码是N=05H~1FH时候调用ROMBIOS中的处理程序

                    N=20H~3FH时候调用的是DOS的终端程序

其中DOS的INT 21H是一个大型的软中断,大约由90多种子功能

其中DOS 中的INT 22H 、INT 23H 、INT   24H不允许用户直接使用。

INT 20H作用是终止正在运行的程序,返回OS。这种终止退出程序,适用与。com的文件,而不适用与。exe的文件




附BIOS大全和INT 21H的调用

BIOS 中断:
1、显示服务(Video Service——INT 10H)
00H —设置显示器模式 0CH —写图形象素
01H —设置光标形状 0DH —读图形象素
02H —设置光标位置 0EH —在 Teletype 模式下显示字符
03H —读取光标信息 0FH —读取显示器模式
04H —读取光笔位置 10H —颜色
05H —设置显示页 11H —字体
06H、07H —初始化或滚屏 12H —显示器的配置
08H —读光标处的字符及其属性 13H —在 Teletype 模式下显示字符串
09H —在光标处按指定属性显示字符 1AH —读取/设置显示组合编码
0AH —在当前光标处显示字符 1BH —读取功能/状态信息
0BH —设置调色板、背景色或边框 1CH —保存/恢复显示器状态
(1)、功能 00H
功能描述:设置显示器模式
入口参数:AH=00H
AL=显示器模式,见下表所示
出口参数:无
可用的显示模式如下所列:
显示模式显示模式属性显示模式显示模式属性
00H40×2516 色 文本 01H40×2516 色 文本
02H80×2516 色 文本 03H80×2516 色 文本
04H320×2004 色 05H320×2004 色
06H640×2002 色 07H80×252 色 文本
08H160×20016 色 09H320×20016 色
0AH640×2004 色 0BH 保留
0CH 保留 0DH320×20016 色
0EH640×20016 色 0FH640×3502(单色)
10H640×3504 色 10H640×35016 色
11H640×4802 色 12H640×48016 色
13H640×480256 色
对于超级 VGA 显示卡,我们可用 AX=4F02H 和下列 BX 的值来设置其显示模
式。
BX 显示模式属性 BX 显示模式属性
100H640×400256 色 101H640×480256 色
102H800×60016 色 103H800×600256 色
104H1024×76816 色 105H1024×768256 色
106H1280×102416 色 107H1280×1024256 色
108H80×60 文本模式 109H132×25 文本模式
10AH132×43 文本模式 10BH132×50 文本模式
10CH132×60 文本模式
(2)、功能 01H
功能描述:设置光标形状
入口参数:AH=01H
CH 低四位=光标的起始行
CL 低四位=光标的终止行
出口参数:无
(3)、功能 02H
功能描述:用文本坐标下设置光标位置
入口参数:AH=02H
BH=显示页码
DH=行(Y 坐标)
DL=列(X 坐标)
出口参数:无
(4)、功能 03H
功能描述:在文本坐标下,读取光标各种信息
入口参数:AH=03H
BH=显示页码
出口参数:CH=光标的起始行
CL=光标的终止行
DH=行(Y 坐标)
DL=列(X 坐标)
(5)、功能 04H
功能描述:获取当前状态和光笔位置
入口参数:AH=04H
出口参数:AH=00h——光笔未按下/未触发,01h——光笔已按下/已触发
BX=象素列(图形 X 坐标)
CH=象素行(图形 Y 坐标,显示模式:04H~06H)
CX=象素行(图形 Y 坐标,显示模式:0DH~10H)
DH=字符行(文本 Y 坐标)
DL=字符列(文本 X 坐标)
(6)、功能 05H
功能描述:设置显示页,即选择活动的显示页
入口参数:AH=05H
AL=显示页
对于 CGA、
EGA、
MCGA 和 VGA,其显示页如下表所列: 模式页数显示器类型
00H、01H0~7CGA、EGA、MCGA、VGA
02H、03H0~3CGA
02H、03H0~7EGA、MCGA、VGA
07H0~7EGA、VGA
0DH0~7EGA、VGA
0EH0~3EGA、VGA
0FH0~1EGA、VGA
10H0~1EGA、VGA
对于 PCjr:
AL=80H——读取 CRT/CPU 页寄存器
81H——设置 CPU 页寄存器
82H——设置 CRT 页寄存器
83H——设置 CRT/CPU 页寄存器
BH=CRT 页(子功能号 82H 和 83H)
BL=CPU 页(子功能号 81H 和 83H)
出口参数:对于前者,无出口参数,但对 PCjr 在子功能 80H~83H 调用下,
有:BH=CRT 页寄存器,BL=CPU 页寄存器
(7)、功能 06H 和 07H
功能描述:初始化屏幕或滚屏
入口参数:AH=06H——向上滚屏,07H——向下滚屏
AL=滚动行数(0——清窗口)
BH=空白区域的缺省属性
(CH、CL)=窗口的左上角位置(Y 坐标,X 坐标)
(DH、DL)=窗口的右下角位置(Y 坐标,X 坐标)
出口参数:无
(8)、功能 08H
功能描述:读光标处的字符及其属性
入口参数:AH=08H
BH=显示页码
出口参数:AH=属性
AL=字符
(9)、功能 09H
功能描述:在当前光标处按指定属性显示字符
入口参数:AH=09H
AL=字符
BH=显示页码
BL=属性(文本模式)或颜色(图形模式)
CX=重复输出字符的次数
出口参数:无
(10)、功能 0AH
功能描述:在当前光标处按原有属性显示字符
入口参数:AH=0AH
AL=字符
BH=显示页码
BL=颜色(图形模式,仅适用于 PCjr)
CX=重复输出字符的次数
出口参数:无
(11)、功能 0BH
功能描述:设置调色板、背景色或边框
入口参数:AH=0BH
设置颜色:BH=00H,BL=颜色
选择调色板:BH=01H,BL=调色板(320×200、4 种颜色的图形模式)
出口参数:无
(12)、功能 0CH
功能描述:写图形象素
入口参数:AH=0CH
AL=象素值
BH=页码
(CX、DX)=图形坐标列(X)、行(Y)
出口参数:无
(13)、功能 0DH
功能描述:读图形象素
入口参数:AH=0DH
BH=页码
(CX、DX)=图形坐标列(X)、行(Y)
出口参数:AL=象素值
(14)、功能 0EH
功能描述:在 Teletype 模式下显示字符
入口参数:AH=0EH
AL=字符
BH=页码
BL=前景色(图形模式)
出口参数:无
(15)、功能 0FH
功能描述:读取显示器模式
入口参数:AH=0FH
出口参数:AH=屏幕字符的列数
AL=显示模式(参见功能 00H 中的说明)
BH=页码
(16)、功能 10H
功能描述:颜色中断。其子功能说明如下: 功能号 子功能名称功能号 子功
能名称
00H — 设置调色板寄存器 01H — 设置边框颜色
02H — 设置调色板和边框 03H — 触发闪烁/亮显位
07H — 读取调色板寄存器 08H — 读取边框颜色
09H — 读取调色板和边框 10H — 设置颜色寄存器
12H — 设置颜色寄存器块 13H — 设置颜色页状态
15H — 读取颜色寄存器 17H — 读取颜色寄存器块
1AH — 读取颜色页状态 1BH — 设置灰度值
(17)、功能 11H
功能描述:字体中断。其子功能说明如下: 子功能号子功能名称
00H 装入用户字体和可编程控制器
10H 装入用户字体和可编程控制器
01H 装入 8×14 ROM 字体和可编程控制器
11H 装入 8×14 ROM 字体和可编程控制器
02H 装入 8×8 ROM 字体和可编程控制器
12H 装入 8×8 ROM 字体和可编程控制器
03H 设置块指示器
04H 装入 8×16 ROM 字体和可编程控制器
14H 装入 8×16 ROM 字体和可编程控制器
20H 设置 INT 1Fh 字体指针
21H 为用户字体设置 INT 43h
22H 为 8×14 ROM 字体设置 INT 43H
23H 为 8×8 ROM 字体设置 INT 43H
24H 为 8×16 ROM 字体设置 INT 43H
30H 读取字体信息
(18)、功能 12H
功能描述:显示器的配置中断。其子功能说明如下: 功能号 功能名称 功能号
功能名称
10H — 读取配置信息 20H — 选择屏幕打印
30H — 设置扫描行 31H — 允许/禁止装入缺省调色板
32H — 允许/禁止显示 33H — 允许/禁止灰度求和
34H — 允许/禁止光标模拟 35H — 切换活动显示
36H — 允许/禁止屏幕刷新
(19)、功能 13H
功能描述:在 Teletype 模式下显示字符串
入口参数:AH=13H
BH=页码
BL=属性(若 AL=00H 或 01H)
CX=显示字符串长度
(DH、DL)=坐标(行、列)
ES:BP=显示字符串的地址 AL=显示输出方式
0——字符串中只含显示字符,其显示属性在 BL 中。显示后,光标位置不变
1——字符串中只含显示字符,其显示属性在 BL 中。显示后,光标位置改变
2——字符串中含显示字符和显示属性。显示后,光标位置不变
3——字符串中含显示字符和显示属性。显示后,光标位置改变
出口参数:无
(20)、功能 1AH
功能描述:读取/设置显示组合编码,仅 PS/2 有效,在此从略
(21)、功能 1BH
功能描述:读取功能/状态信息,仅 PS/2 有效,在此从略
(22)、功能 1CH
功能描述:保存/恢复显示器状态,仅 PS/2 有效,在此从略
2、直接磁盘服务(Direct Disk Service——INT 13H)
00H —磁盘系统复位 0EH —读扇区缓冲区
01H —读取磁盘系统状态 0FH —写扇区缓冲区
02H —读扇区 10H —读取驱动器状态
03H —写扇区 11H —校准驱动器
04H —检验扇区 12H —控制器 RAM 诊断
05H —格式化磁道 13H —控制器驱动诊断
06H —格式化坏磁道 14H —控制器内部诊断
07H —格式化驱动器 15H —读取磁盘类型
08H —读取驱动器参数 16H —读取磁盘变化状态
09H —初始化硬盘参数 17H —设置磁盘类型
0AH —读长扇区 18H —设置格式化媒体类型
0BH —写长扇区 19H —磁头保护
0CH —查寻 1AH —格式化 ESDI 驱动器
0DH —硬盘系统复位
(1)、功能 00H
功能描述:磁盘系统复位
入口参数:AH=00H
DL=驱动器,00H~7FH:软盘;80H~0FFH:硬盘
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态代码,参见功
能号 01H 中的说明
(2)、功能 01H
功能描述:读取磁盘系统状态
入口参数:AH=01H
DL=驱动器,00H~7FH:软盘;80H~0FFH:硬盘
出口参数:AH=00H,AL=状态代码,其定义如下:
00H — 无错 01H — 非法命令
02H — 地址目标未发现 03H — 磁盘写保护(软盘)
04H — 扇区未发现 05H — 复位失败(硬盘)
06H — 软盘取出(软盘)07H — 错误的参数表(硬盘)
08H — DMA 越界(软盘)09H — DMA 超过 64K 界限
0AH — 错误的扇区标志(硬盘)0BH — 错误的磁道标志(硬盘)
0CH — 介质类型未发现(软盘)0DH — 格式化时非法扇区号(硬盘)
0EH — 控制数据地址目标被发现(硬盘)0FH — DMA 仲裁越界(硬盘)
10H — 不正确的 CRC 或 ECC 编码 11H — ECC 校正数据错(硬盘)
 CRC:Cyclic Redundancy Check code
 ECC:Error Checking & Correcting code
20H — 控制器失败 40H — 查找失败
80H — 磁盘超时(未响应)AAH — 驱动器未准备好(硬盘)
BBH — 未定义的错误(硬盘)CCH — 写错误(硬盘)
E0H — 状态寄存器错(硬盘)FFH — 检测操作失败(硬盘)
(3)、功能 02H
功能描述:读扇区
入口参数:AH=02H
AL=扇区数
CH=柱面
CL=扇区
DH=磁头
DL=驱动器,00H~7FH:软盘;80H~0FFH:硬盘
ES:BX=缓冲区的地址
出口参数:CF=0——操作成功,AH=00H,AL=传输的扇区数,否则,AH
=状态代码,参见功能号 01H 中的说明
(4)、功能 03H
功能描述:写扇区
入口参数:AH=03H
AL=扇区数
CH=柱面
CL=扇区
DH=磁头
DL=驱动器,00H~7FH:软盘;80H~0FFH:硬盘
ES:BX=缓冲区的地址
出口参数:CF=0——操作成功,AH=00H,AL=传输的扇区数,否则,AH
=状态代码,参见功能号 01H 中的说明
(5)、功能 04H
功能描述:检验扇区
入口参数:AH=04H
AL=扇区数
CH=柱面
CL=扇区
DH=磁头
DL=驱动器,00H~7FH:软盘;80H~0FFH:硬盘
ES:BX=缓冲区的地址
出口参数:CF=0——操作成功,AH=00H,AL=被检验的扇区数,否则,
AH=状态代码,参见功能号 01H 中的说明
(6)、功能 05H
功能描述:格式化磁道
入口参数:AH=05H
AL=交替(Interleave)
CH=柱面
DH=磁头
DL=驱动器,00H~7FH:软盘;80H~0FFH:硬盘
ES:BX=地址域列表的地址
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态代码,参见功
能号 01H 中的说明
(7)、功能 06H
功能描述:格式化坏磁道
入口参数:AH=06H
AL=交替
CH=柱面
DH=磁头
DL=80H~0FFH:硬盘
ES:BX=地址域列表的地址
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态代码,参见功
能号 01H 中的说明
(8)、功能 07H
功能描述:格式化驱动器
入口参数:AH=07H
AL=交替
CH=柱面
DL=80H~0FFH:硬盘
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态代码,参见功
能号 01H 中的说明
(9)、功能 08H
功能描述:读取驱动器参数
入口参数:AH=08H
DL=驱动器,00H~7FH:软盘;80H~0FFH:硬盘
出口参数:CF=1——操作失败,AH=状态代码,参见功能号 01H 中的说明,
否则, BL=01H — 360K
=02H — 1.2M
=03H — 720K
=04H — 1.44M
CH=柱面数的低 8 位
CL 的位 7-6=柱面数的该 2 位
CL 的位 5-0=扇区数
DH=磁头数
DL=驱动器数
ES:DI=磁盘驱动器参数表地址
(10)、功能 09H
功能描述:初始化硬盘参数
入口参数:AH=09H
DL=80H~0FFH:硬盘(还有有关参数表问题,在此从略)
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态代码,参见功
能号 01H 中的说明
(11)、功能 0AH
功能描述:读长扇区,每个扇区随带四个字节的 ECC 编码
入口参数:AH=0AH
AL=扇区数
CH=柱面
CL=扇区
DH=磁头
DL=80H~0FFH:硬盘
ES:BX=缓冲区的地址
出口参数:CF=0——操作成功,AH=00H,AL=传输的扇区数,否则,AH
=状态代码,参见功能号 01H 中的说明
(12)、功能 0BH
功能描述:写长扇区,每个扇区随带四个字节的 ECC 编码
入口参数:AH=0BH
AL=扇区数
CH=柱面
CL=扇区
DH=磁头
DL=80H~0FFH:硬盘
ES:BX=缓冲区的地址
出口参数:CF=0——操作成功,AH=00H,AL=传输的扇区数,否则,AH
=状态代码,参见功能号 01H 中的说明
(13)、功能 0CH
功能描述:查寻
入口参数:AH=0CH
CH=柱面的低 8 位
CL(7-6 位)=柱面的高 2 位
DH=磁头
DL=80H~0FFH:硬盘
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态代码,参见功
能号 01H 中的说明
(14)、功能 0DH
功能描述:硬盘系统复位
入口参数:AH=0DH
DL=80H~0FFH:硬盘
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态代码,参见功
能号 01H 中的说明
(15)、功能 0EH
功能描述:读扇区缓冲区
入口参数:AH=0EH
ES:BX=缓冲区的地址
出口参数:CF=0——操作成功,否则,AH=状态代码,参见功能号 01H 中
的说明
(16)、功能 0FH
功能描述:写扇区缓冲区
入口参数:AH=0FH
ES:BX=缓冲区的地址
出口参数:CF=0——操作成功,否则,AH=状态代码,参见功能号 01H 中
的说明
(17)、功能 10H
功能描述:读取驱动器状态
入口参数:AH=10H
DL=80H~0FFH:硬盘
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态代码,参见功
能号 01H 中的说明
(18)、功能 11H
功能描述:校准驱动器
入口参数:AH=11H
DL=80H~0FFH:硬盘
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态代码,参见功
能号 01H 中的说明
(19)、功能 12H
功能描述:控制器 RAM 诊断
入口参数:AH=12H
出口参数:CF=0——操作成功,否则,AH=状态代码,参见功能号 01H 中
的说明
(20)、功能 13H
功能描述:控制器驱动诊断
入口参数:AH=13H
出口参数:CF=0——操作成功,否则,AH=状态代码,参见功能号 01H 中
的说明
(21)、功能 14H
功能描述:控制器内部诊断
入口参数:AH=14H
出口参数:CF=0——操作成功,否则,AH=状态代码,参见功能号 01H 中
的说明
(22)、功能 15H
功能描述:读取磁盘类型
入口参数:AH=15H
DL=驱动器,00H~7FH:软盘;80H~0FFH:硬盘
出口参数:CF=1——操作失败,AH=状态代码,参见功能号 01H 中的说明,
否则,AH=00H — 未安装驱动器
=01H — 无改变线支持的软盘驱动器
=02H — 带有改变线支持的软盘驱动器
=03H — 硬盘,CX:DX=512 字节的扇区数
(23)、功能 16H
功能描述:读取磁盘变化状态
入口参数:AH=16H
DL=00H~7FH:软盘
出口参数:CF=0——磁盘未改变,AH=00H,否则,AH=06H,参见功能
号 01H 中的说明
(24)、功能 17H
功能描述:设置磁盘类型
入口参数:AH=17H
DL=00H~7FH:软盘 AL=00H — 未用
=01H — 360K 在 360K 驱动器中
=02H — 360K 在 1.2M 驱动器中
=03H — 1.2M 在 1.2M 驱动器中
=04H — 720K 在 720K 驱动器中
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态编码,参见功
能号 01H 中的说明
(25)、功能 18H
功能描述:设置格式化媒体类型
入口参数:AH=18H
CH=柱面数
CL=每磁道的扇区数
DL=00H~7FH:软盘
出口参数:CF=0——操作成功,AH=00H,ES:DI=介质类型参数表地址,
否则,AH=状态编码,参见功能号 01H 中的说明
(26)、功能 19H
功能描述:磁头保护,仅在 PS/2 中有效,在此从略
(27)、功能 1AH
功能描述:格式化 ESDI 驱动器,仅在 PS/2 中有效,在此从略
3、串行口服务(Serial Port Service——INT 14H)
00H —初始化通信口 03H —读取通信口状态
01H —向通信口输出字符 04H —扩充初始化通信口
02H —从通信口读入字符
(1)、功能 00H
功能描述:初始化通信口
入口参数:AH=00H
DX=初始化通信口号(0=COM1,1=COM2,......)
AL=初始化参数,参数的说明如下: 波特率奇偶位停止位字的位数
76543210
000 = 110X0 = None0 = 1 bit10 = 7 bits
001 = 15001 = Odd1 = 2 bits11 = 8 bits
010 = 30011 = Even
011 = 600
100 = 1200
101 = 2400
110 = 4800
111 = 9600
对于 PS/2,可用 INT 14H 之功能 04H 和 05H 来初始化其通信速率大于
9600。
出口参数:AH=通信口状态,各状态位为 1 时的含义如下: 位 7—超时
位 6—传递移位寄存器为空
位 5—传递保持寄存器为空
位 4—发现终止位 3—发现帧错误
位 2—发现奇偶错
位 1—发现越界错
位 0—接受数据准备好
AL=Modem 状态
位 7—接受单线信号诊断
位 6—环指示器
位 5—数据发送准备好
位 4—清除数据,再发送位 3—改变在接受线上的信号诊断
位 2—后边界环指示器
位 1—改变“数据准备好”状态
位 0—改变“清除—发送”状态
(2)、功能 01H
功能描述:向通信口输出字符
入口参数:AH=01H
AL=字符
DX=初始化通信口号(0=COM1,1=COM2,......)
出口参数:AL 的值不变
AH 的位 7=0——操作成功,通信口状态,AH 的位 6~0 是其状态位
(3)、功能 02H
功能描述:从通信口读入字符
入口参数:AH=02H
DX=初始化通信口号(0=COM1,1=COM2,......)
出口参数:AL=接受的字符
AH 的位 7=0——操作成功,通信口状态,AH 的位 6~0 是其状态位
(4)、功能 03H
功能描述:读取通信口状态
入口参数:AH=03H
DX=初始化通信口号(0=COM1,1=COM2,......)
出口参数:AH=通信口状态,AL=Modem 状态,参见功能号 00H 中的说明
(5)、功能 04H
功能描述:扩充初始化通信口,仅在 PS/2 中有效,在此从略
4、杂项系统服务(Miscellaneous System Service——INT 15H)
00H —开盒式磁带机马达 85H —系统请求(SysReq)键
01H —关盒式磁带机马达 86H —延迟
02H —读盒式磁带机 87H —移动扩展内存块
03H —写盒式磁带机 88H —读取扩展内存大小
0FH —格式化 ESDI 驱动器定期中断 89H —进入保护模式
21H —读/写自检(POST)错误记录 90H —设备等待
4FH —键盘截听 91H —设备加电自检
80H —设备打开 C0H —读取系统环境
81H —设备关闭 C1H —读取扩展 BIOS 数据区地址
82H —进程终止 C2H —鼠标图形
83H —事件等待 C3H —设置 WatcHdog 超时
84H —读游戏杆 C4H —可编程选项选择
(1)、功能 00H
功能描述:开盒式磁带机马达
入口参数:AH=00H
出口参数:CF=0——操作成功,否则,AH=状态(86H,若未安装盒式磁带
机)
(2)、功能 01H
功能描述:关盒式磁带机马达
入口参数:AH=01H
出口参数:CF=0——操作成功,否则,AH=状态(86H,若未安装盒式磁带
机)
(3)、功能 02H
功能描述:读盒式磁带机
入口参数:AH=02H
CX=读入的字节数
ES:BX=存放数据的缓冲区地址
出口参数:CF=0——操作成功,DX=实际读入的字节数,ES:BX 指向最后一
个字节的后面地址,否则,AH=状态码,其值含义如下: 01H
—— CRC 校验码错 80H —— 非法命令
02H —— 位信号混乱 86H —— 未安装盒式磁带机
04H —— 无发现数据
(4)、功能 03H
功能描述:写盒式磁带机
入口参数:AH=03H
CX=要写入的字节数
ES:BX=已存数据的缓冲区地址
出口参数:CF=0——操作成功,CX=00H,ES:BX 指向最后一个字节的后面
地址,否则,AH=状态码,其值含义如下: 80H ——
非法命令 86H —— 未安装盒式磁带机
(5)、功能 0FH
功能描述:格式化 ESDI 驱动器定期中断,仅在 PS/2 中有效,在此从略
(6)、功能 21H
功能描述:读/写自检(POST)错误记录,仅在 PS/2 中有效,在此从略
(7)、功能 4FH
功能描述:键盘截听,仅在 PS/2 中有效,在此从略
(8)、功能 80H
功能描述:打开设备
入口参数:AH=80H
BX=设备号
CX=进程号
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态码
(9)、功能 81H
功能描述:关闭设备
入口参数:AH=81H
BX=设备号
CX=进程号
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态码
(10)、功能 82H
功能描述:进程终止
入口参数:AH=81H
BX=进程号
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态码
(11)、功能 83H
功能描述:事件等待
入口参数:AH=83H 若需要事件等待,则:AL=00H
CX:DX=千分秒
ES:BX=信号量字节的地址
否则,调用参数为 AL=01H
出口参数:若调用时,AL=00H,操作成功——CF=0,否则,CF=1
(12)、功能 84H
功能描述:读游戏杆
入口参数:AH=84H
DX=00H——读取开关设置
 =01H——读取阻力输入
出口参数:CF=1H——操作失败,否则,
 DX=00H 时,AL=开关设置(位 7~4)
 DX=01H 时,AX、BX、CX 和 DX 分别为 A(x)、A(y)、B(x)和 B(y)的值
(13)、功能 85H
功能描述:系统请求(SysReq)键
入口参数:AH=85H
AL=00H——键按下
 =01H——键放开
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态码
(14)、功能 86H
功能描述:延迟
入口参数:AH=86H
CX:DX=千分秒
出口参数:CF=0——操作成功,AH=00H
(15)、功能 87H
功能描述:从常规内存和扩展内存之间移动扩展内存块
入口参数:AH=87H
CX=移动的字数
ES:SI=GDT(Global Descriptor Table)的地址,其结构定义如下: 偏移量存
储的信息
00h-0Fh 保留,但现全为 0
10h-11h 段的长度(2CX-1 或更大)
12h-14h24 位源地址
15h 访问权限字节(其值为 93h)
16h-17h 保留,但现全为 0
18h-19h 段的长度(2CX-1 或更大)
1Ah-1Ch 24 位目标源地址
1Dh 访问权限字节(其值为 93h)
1Eh-2Fh 保留,但现全为 0
出口参数:CF=0——操作成功,AH=00H,否则,AH=状态码,其含义如
下:
  01H —— RAM 奇偶错
  02H —— 异常中断错
  03H —— 20 号线门地址失败
(16)、功能 88H
功能描述:读取扩展内存大小
入口参数:AH=88H
出口参数:AX=扩展内存字节数(以 K 为单位)
(17)、功能 89H
功能描述:进入保护模式,CPU 从实模式进入保护模式
入口参数:AH=89H
BH=IRQ0 的中断号
BL=IRQ8 的中断号
ES:SI=GDT 的地址(参见功能号 87H)
出口参数:CF=1——操作失败,AH=0FFH,否则,AH=00H,CS、
DS、
ES
和 SS 都是用户定义的选择器
(18)、功能 90H
功能描述:设备等待
入口参数:AH=90H AL=驱动器类型,具体的驱动器类型定义如下:
=00H~7FH——串行再重用设备
=80H~0BFH——可重入式设备
=0C0H~0FFH——等待访问设备,没有自检功能
00h — 磁盘
02h — 键盘
80h — 网络
FDh — 软盘马达启动 01h — 软盘
03h — 点设备(Pointing Device)
FCh — 硬盘复位
FEh — 打印机
ES:BX=对驱动器类型 80H~0FFH 的请求块地址
出口参数:CF=1——操作失败,否则,AH=00H
(19)、功能 91H
功能描述:设备加电自检
入口参数:AH=91H
AL=00H~7FH——串行再重用设备
 =80H~0BFH——可重入式设备
出口参数:AH=00H
(20)、功能 0C0H
功能描述:读取系统环境
入口参数:AH=0C0H
出口参数:ES:BX=配置表地址,配置表的定义如下: 偏移量含义说明
00h-01h 表的大小(字节数)
02h 系统模型
03h 系统子模型
04hBIOS 版本号
05h 配置标志,其各位为 1 时的说明如下:
  位 7—DMA 通道 3 使用
  位 6—存在从属 8259
  位 5—实时时钟有效
  位 4—键盘截听有效
  位 3—等待外部事件有效
  位 2—扩展 BIOS 数据区
  位 1—微通道设施
  位 0—保留
06h-09h 保留
(21)、功能 C1H
功能描述:读取扩展 BIOS 数据区地址,仅在 PS/2 中有效,在此从略
(22)、功能 C2H
功能描述:鼠标图形,仅在 PS/2 中有效,在此从略
(23)、功能 C3H
功能描述:设置 WatcHdog 超时,仅在 PS/2 中有效,在此从略
(24)、功能 C4H
功能描述:可编程选项选择,仅在 PS/2 中有效,在此从略
5、键盘服务(Keyboard Service——INT 16H)
00H、10H —从键盘读入字符 03H —设置重复率
01H、11H —读取键盘状态 04H —设置键盘点击
02H, 12H —读取键盘标志 05H —字符及其扫描码进栈
(1)、功能 00H 和 10H
功能描述:从键盘读入字符
入口参数:AH=00H——读键盘
=10H——读扩展键盘,可根据 0000:0496H 单元的内容判断:扩展键盘是否
有效
出口参数:AH=键盘的扫描码
AL=字符的 ASCII 码
(2)、功能 01H 和 11H
功能描述:读取键盘状态
入口参数:AH=01H——检查普通键盘
=11H——检查扩展键盘
出口参数:ZF=1——无字符输入,否则,AH=键盘的扫描码,AL=ASCII 码。
(3)、功能 02H 和 12H
功能描述:读取键盘标志
入口参数:AH=02H——普通键盘的移位标志
=12H——扩展键盘的移位标志
出口参数:AL=键盘标志(02H 和 12H 都有效),其各位之值为 1 时的含义如
下: 位 7—INS 开状态位 3—ALT 键按下
位 6—CAPS LOCK 开状态位 2—CTRL 键按下
位 5—NUM LOCK 开状态位 1—左 SHIFT 键按下
位 4—SCROLL LOCK 开状态位 0—右 SHIFT 键按下
AH=扩展键盘的标志(12H 有效),其各位之值为 1 时的含义如下:
位 7—SysReq 键按下位 3—右 ALT 键按下
位 6—CAPS LOCK 键按下位 2—右 CTRL 键按下
位 5—NUM LOCK 键按下位 1—左 ALT 键按下
位 4—SCROLL 键按下位 0—左 CTRL 键按下
(4)、功能 03H
功能描述:设置重复率
入口参数:AH=03H 对于 PC/AT 和 PS/2:AL=05H
BH=重复延迟
BL=重复率
对于 PCjr:AL=00H——装入缺省的速率和延迟
=01H——增加初始延迟
=02H——重复频率降低一半
=03H——增加延迟和降低一半重复频率
=04H——关闭键盘重复功能
出口参数:无
(5)、功能 04H
功能描述:设置键盘点击
入口参数:AH=04H AL=00H——关闭键盘点击功能
=01H——打开键盘点击功能
出口参数:无
(6)、功能 05H
功能描述:字符及其扫描码进栈
入口参数:AH=05H
CH=字符的描述码
CL=字符的 ASCII 码
出口参数:CF=1——操作成功,AL=00H,否则,AL=01H
6、并行口服务(Parallel Port Service——INT 17H)
00H —向打印机输出字符
01H —初始化打印机端口
02H —读取打印机状态
(1)、功能 00H
功能描述:向打印机输出字符
入口参数:AH=00H
AL=输出的字符
DX=打印机号(0—LPT1,1—LPT2,2—LPT3,......)
出口参数:AH=打印机状态。
其各位为 1 时的含义如下: 位 7—打印机空闲 位
3—I/O 错误
位 6—打印机响应位 2—保留
位 5—无纸位 1—保留
位 4—打印机被选位 0—打印机超时
(2)、功能 01H
功能描述:初始化打印机端口
入口参数:AH=01H
DX=打印机号(0—LPT1,1—LPT2,2—LPT3,......)
出口参数:AH=打印机状态。各位定义如下功能 00H 所示
(3)、功能 02H
功能描述:读取打印机状态
入口参数:AH=02H
DX=打印机号(0—LPT1,1—LPT2,2—LPT3,......)
出口参数:AH=打印机状态。各位定义如下功能 00H 所示
7、时钟服务(Clock Service——INT 1AH)
00H —读取时钟“滴答”计数 06H —设置闹钟
01H —设置时钟“滴答”计数 07H —闹钟复位
02H —读取时间 0AH —读取天数计数
03H —设置时间 0BH —设置天数计数
04H —读取日期 80H —设置声音源信息
05H —设置日期
(1)、功能 00H
功能描述:读取时钟“滴答”计数
入口参数:AH=00H
出口参数:AL=00H——未过午夜,否则,表示已过午夜
CX:DX=时钟“滴答”计数
(2)、功能 01H
功能描述:设置时钟“滴答”计数
入口参数:AH=01H
CX:DX=时钟“滴答”计数
出口参数:无
(3)、功能 02H
功能描述:读取时间
入口参数:AH=02H
出口参数:CH=BCD 码格式的小时
CL=BCD 码格式的分钟
DH=BCD 码格式的秒
DL=00H——标准时间,否则,夏令时
CF=0——时钟在走,否则,时钟停止
(4)、功能 03H
功能描述:设置时间
入口参数:AH=03H
CH=BCD 码格式的小时
CL=BCD 码格式的分钟
DH=BCD 码格式的秒
DL=00H——标准时间,否则,夏令时
出口参数:无
(5)、功能 04H
功能描述:读取日期
入口参数:AH=04H
出口参数:CH=BCD 码格式的世纪
CL=BCD 码格式的年
DH=BCD 码格式的月
DL=BCD 码格式的日
CF=0——时钟在走,否则,时钟停止
(6)、功能 05H
功能描述:设置日期
入口参数:AH=05H
CH=BCD 码格式的世纪
CL=BCD 码格式的年
DH=BCD 码格式的月
DL=BCD 码格式的日
出口参数:无
(7)、功能 06H
功能描述:设置闹钟
入口参数:AH=06H
CH=BCD 码格式的小时
CL=BCD 码格式的分钟
DH=BCD 码格式的秒
出口参数:CF=0——操作成功,否则,闹钟已设置或时钟已停止
(8)、功能 07H
功能描述:闹钟复位
入口参数:AH=07H
出口参数:无
(9)、功能 0AH
功能描述:读取天数计数,仅在 PS/2 有效,在此从略
(10)、功能 0BH
功能描述:设置天数计数,仅在 PS/2 有效,在此从略
(11)、功能 80H
功能描述:设置声音源信息
入口参数:AH=80H
AL=声音源
=00H——8253 可编程计时器,通道 2
=01H——盒式磁带输入
=02H——I/O 通道上的"Audio In"
=03H——声音产生芯片
出口参数:无
8、直接系统服务(Direct System Service)
INT 00H —“0”作除数
INT 01H —单步中断
INT 02H —非屏蔽中断(NMI)
INT 03H —断点中断
INT 04H —算术溢出错误
INT 05H —打印屏幕和 BOUND 越界
INT 06H —非法指令错误
INT 07H —处理器扩展无效
INT 08H —时钟中断
INT 09H —键盘输入
INT 0BH —通信口(COM2:)
INT 0CH —通信口(COM1:)
INT 0EH —磁盘驱动器输入/输出
INT 11H —读取设备配置
INT 12H —读取常规内存大小(返回值 AX 为内存容量,以 K 为单位)
INT 18H —ROM BASIC
INT
INT
INT
INT
INT
INT
19H —重启动系统
1BH —CTRL+BREAK 处理程序
1CH —用户时钟服务
1DH —指向显示器参数表指针
1EH —指向磁盘驱动器参数表指针
1FH —指向图形字符模式表指针



INT  21H


AH

功能

调用参数

返回参数

0

程序终止(同INT 20H)

CS=程序段前缀


1

键盘输入并回显


AL=输入字符

2

显示输出

DL=输出字符


3

异步通迅输入


AL=输入数据

4

异步通迅输出

DL=输出数据


5

打印机输出

DL=输出字符


6

直接控制台I/O

DL=FF(输入)

AL=输入字符

DL=字符(输出)

7

键盘输入(无回显)


AL=输入字符

8

键盘输入(无回显)


AL=输入字符

检测Ctrl-Break

9

显示字符串

DS:DX=串地址


'$'结束字符串

0A

键盘输入到缓冲区

DS:DX=缓冲区首地址

(DS:DX+1)=实际输入的字符数

(DS:DX)=缓冲区最大字符数

0B

检验键盘状态


AL=00 有输入

AL=FF 无输入

0C

清除输入缓冲区并

AL=输入功能号


请求指定的输入功能

(1,6,7,8,A)

0D

磁盘复位


清除文件缓冲区

0E

指定当前缺省的磁盘驱动器

DL=驱动器号 0=A,1=B,...

AL=驱动器数

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

  =02 DTA空间不够

16

建文件

DS:DX=FCB首地址

AL=00 建立成功

  =FF 无磁盘空间

17

文件改名

DS:DX=FCB首地址

AL=00 成功

(DS:DX+1)=旧文件名

AL=FF 未成功

(DS:DX+17)=新文件名

 

19

取当前缺省磁盘驱动器


AL=缺省的驱动器号 0=A,1=B,2=C,...

1A

置DTA地址

DS:DX=DTA地址


1B

取缺省驱动器FAT信息


AL=每簇的扇区数

DS:BX=FAT标识字节

CX=物理扇区大小

DX=缺省驱动器的簇数

1C

取任一驱动器FAT信息

DL=驱动器号

同上

21

随机读

DS:DX=FCB首地址

AL=00 读成功

  =01 文件结束

  =02 缓冲区溢出

  =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首地址

AL=00 读成功

CX=记录数

  =01 文件结束

 

  =02 缓冲区太小,传输结束

 

  =03 缓冲区不满

28

随机分块写

DS:DX=FCB首地址

AL=00 写成功

CX=记录数

  =01 盘满

 

  =02 缓冲区溢出

29

分析文件名

ES:DI=FCB首地址

AL=00 标准文件

DS:SI=ASCIIZ串

  =01 多义文件

AL=控制分析标志

  =02 非法盘符

2A

取日期


CX=年

DH:DL=月:日(二进制)

2B

设置日期

CX:DH:DL=年:月:日

AL=00 成功

  =FF 无效

2C

取时间


CH:CL=时:分

DH:DL=秒:1/100秒

2D

设置时间

CH:CL=时:分

AL=00 成功

DH:DL=秒:1/100秒

  =FF 无效

2E

置磁盘自动读写标志

AL=00 关闭标志


AL=01 打开标志

2F

取磁盘缓冲区的首址


ES:BX=缓冲区首址

30

取DOS版本号


AH=发行号,AL=版本

31

结束并驻留

AL=返回码


DX=驻留区大小

33

Ctrl-Break检测

AL=00 取状态

DL=00 关闭Ctrl-Break检测

  =01 置状态(DL)

  =01 打开Ctrl-Break检测

DL=00 关闭检测

 

  =01 打开检测

 

35

取中断向量

AL=中断类型

ES:BX=中断向量

36

取空闲磁盘空间

DL=驱动器号 

成功:AX=每簇扇区数

0=缺省,1=A,2=B,...

     BX=有效簇数


     CX=每扇区字节数


     DX=总簇数


失败:AX=FFFF

38

置/取国家信息

DS:DX=信息区首地址

BX=国家码(国际电话前缀码)

AX=错误码

39

建立子目录(MKDIR)

DS:DX=ASCIIZ串地址

AX=错误码

3A

删除子目录(RMDIR)

DS:DX=ASCIIZ串地址

AX=错误码

3B

改变当前目录(CHDIR)

DS:DX=ASCIIZ串地址

AX=错误码

3C

建立文件

DS:DX=ASCIIZ串地址

成功:AX=文件代号

CX=文件属性

错误:AX=错误码

3D

打开文件

DS:DX=ASCIIZ串地址

成功:AX=文件代号

AL=0 读

错误:AX=错误码

  =1 写

 

  =3 读/写

 

3E

关闭文件

BX=文件代号

失败:AX=错误码

3F

读文件或设备

DS:DX=数据缓冲区地址

读成功:

BX=文件代号

  AX=实际读入的字节数

CX=读取的字节数

  AX=0 已到文件尾

 

读出错:AX=错误码

40

写文件或设备

DS:DX=数据缓冲区地址

写成功:

BX=文件代号

  AX=实际写入的字节数

CX=写入的字节数

写出错:AX=错误码

41

删除文件

DS:DX=ASCIIZ串地址

成功:AX=00

出错:AX=错误码(2,5)

42

移动文件指针

BX=文件代号

成功:DX:AX=新文件指针位置

CX:DX=位移量

出错:AX=错误码

AL=移动方式(0:从文件头绝对位移,1:从当前位置相对移动,2:从文件尾绝对位移)


43

置/取文件属性

DS:DX=ASCIIZ串地址

成功:CX=文件属性

AL=0 取文件属性

失败:CX=错误码

AL=1 置文件属性

 

CX=文件属性

 

44

设备文件I/O控制

BX=文件代号

DX=设备信息

AL=0 取状态

  =1 置状态DX

  =2 读数据

  =3 写数据

  =6 取输入状态

  =7 取输出状态

45

复制文件代号

BX=文件代号1

成功:AX=文件代号2

失败:AX=错误码

46

人工复制文件代号

BX=文件代号1

失败:AX=错误码

CX=文件代号2

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串地址

失败:AX=错误码

ES:BX=参数区首地址

AL=0 装入执行

AL=3 装入不执行

4C

带返回码结束

AL=返回码


4D

取返回代码


AX=返回代码

4E

查找第一个匹配文件

DS:DX=ASCIIZ串地址

AX=出错代码(02,18)

CX=属性

4F

查找下一个匹配文件

DS:DX=ASCIIZ串地址

AX=出错代码(18)

(文件名中带有?或*)

54

取盘自动读写标志


AL=当前标志值

56

文件改名

DS:DX=ASCIIZ串(旧)

AX=出错码(03,05,17)

ES:DI=ASCIIZ串(新)

57

置/取文件日期和时间

BX=文件代号

DX:CX=日期和时间

AL=0 读取

失败:AX=错误码

AL=1 设置(DX:CX)

 

58

取/置分配策略码

AL=0 取码

成功:AX=策略码

AL=1 置码(BX)

失败:AX=错误码

59

取扩充错误码


AX=扩充错误码

BH=错误类型

BL=建议的操作

CH=错误场所

5A

建立临时文件

CX=文件属性

成功:AX=文件代号

DS:DX=ASCIIZ串地址

失败:AX=错误码

5B

建立新文件

CX=文件属性

成功:AX=文件代号

DS:DX=ASCIIZ串地址

失败:AX=错误码

5C

控制文件存取

AL=00封锁

失败:AX=错误码

  =01开启

BX=文件代号

CX:DX=文件位移

SI:DI=文件长度

62

取程序段前缀


BX=PSP地址