基本输入输出系统(BIOS)与磁盘操作系统(DOS)中断大全
中断 21H:DOS 功能调用的瑞士军刀 在实模式DOS编程领域,INT 21H无疑是最核心、最常用的软件中断。它如同一个庞大的API集合,覆盖字符、文件、目录、内存、进程等各类操作。下面我们将逐一解析其主要功能。 字符功能调用(Character-Oriented Function) 这部分是开发
中断 21H:DOS 功能调用的瑞士军刀
在实模式DOS编程领域,INT 21H无疑是最核心、最常用的软件中断。它如同一个庞大的API集合,覆盖字符、文件、目录、内存、进程等各类操作。下面我们将逐一解析其主要功能。
字符功能调用(Character-Oriented Function)
这部分是开发者最常接触的,主要用于与键盘、屏幕、串口、打印机等字符设备进行输入输出。
以最常用的字符输入为例,功能01H、07H和08H这三个功能都用于从键盘读取一个字符。它们的区别在于:01H会回显输入的字符,并过滤掉Ctrl+C等控制字符;07H和08H则不回显,其中08H会过滤控制符而07H不会。这三个功能会一直等待直到有字符可读,即“阻塞”模式。需要注意的是,如果输入被重定向到文件,则无法判断文件是否已读取到末尾。
功能02H用于向屏幕输出一个字符,只需将字符的ASCII码放入DL寄存器并调用即可。如果输出被重定向,同样无法判断磁盘是否已满。
功能03H和04H分别用于串口(COM口)的读取和写入。默认情况下,它们操作COM1,这在早期调试和通信中非常实用。
功能05H专用于打印机,默认指向LPT1,也可通过MODE命令修改。
功能06H是一个多用途控制台功能:当DL寄存器传入0x00到0xFE时,它负责输出字符;当DL传入0xFF时,则切换为输入模式。在输入模式下,如果ZF标志位为1,表示没有字符可读。
功能09H用于在屏幕上显示一个字符串,该字符串以美元符号$作为结束标志。这是一个经典易错点,务必在字符串末尾加上该符号。
功能0AH是键盘缓冲输入,用于读取一整行字符串直到按下回车键。调用前,DS:DX指向的缓冲区第一个字节需预先填入缓冲区的最大容量;调用后,第二个字节存放实际输入的字符数(不包括回车符),从第三个字节开始才是输入的字符串内容。
功能0BH用于检查键盘缓冲区是否有字符可读,是非阻塞的,适合实现非阻塞输入。功能0CH则更为直接:它先清空输入缓冲区,然后再调用指定的子功能(如01H、07H、08H或0AH)读取字符。
目录控制功能(Directory-Control Function)
这部分功能虽然不多,但都是文件系统层面“搬家”或“导航”的基础操作。
功能39H用于创建目录。给定路径字符串指向要创建的新目录,成功时进位标志CF清零,失败时AX返回错误码。
功能3AH用于删除目录。注意,要删除的目录必须为空,否则操作会失败。入口参数和出口参数与创建目录基本相同。
功能3BH用于设置当前目录,即将指定路径变为程序后续操作的默认工作目录。
功能47H用于读取当前目录。给定驱动器号,它会把当前目录的完整路径字符串存入DS:SI指向的缓冲区。
磁盘管理功能(Disk-Management Function)
这部分直接与磁盘驱动器和文件系统底层交互,主要获取驱动器的各种参数和信息。
功能0DH用于清空文件缓冲区,相当于一次“软刷盘”。功能0EH和19H是一对搭档:前者用于指定当前工作驱动器,后者用于读取当前工作的驱动器。
功能1BH和1CH都用于获取驱动器分配信息,前者针对默认驱动器,后者可指定任意驱动器。返回值包含每簇扇区数、扇区大小、驱动器簇数等关键参数。
功能2EH用于设置或清除操作系统自动读写检验标志。功能36H可视为获取驱动器信息的“豪华版”,它会返回可用簇数,对计算磁盘剩余空间非常有用。功能54H与2EH对应,用于读取当前校验标志的状态。
文件操作功能(File Operation Function)
这是INT 21H中最庞大、最复杂的部分,现代文件操作的基本概念在此都能找到雏形。
功能3CH用于创建文件。如果文件已存在,会将其长度截断为0,然后打开并返回一个文件句柄。文件属性通过CX寄存器指定(只读、隐含、系统、归档等)。功能3DH用于打开文件,打开方式(只读、写、读写)由AL的低两位决定。功能3EH用于关闭文件,使用完句柄后务必执行此操作。
功能41H用于删除文件。功能43H用于读取或设置文件属性,属性标志位定义与创建文件时相同。功能45H和46H用于文件句柄的复制和重定向,在实现管道和输入输出重定向时非常关键。功能4EH和4FH是文件搜索组合拳:前者查找第一个匹配的文件,后者继续查找下一个。搜索结果会被填入DTA(磁盘传输区域)中。功能56H用于文件改名,功能57H用于读取或设置文件的日期和时间。
功能5AH和5BH分别用于创建临时文件和创建新文件,比3CH更严谨,例如5BH会确保文件不存在时才创建。功能67H用于设置一个进程可同时打开的最大文件句柄数。功能6CH是扩展的打开文件功能,它将文件可能经历的“打开、创建、替换”等操作整合到一个统一的入口中。
文件操作功能(FCB方式)
尽管在现代编程中,FCB(文件控制块)方式已被更优雅的句柄方式取代,但在阅读古老代码或进行底层兼容性工作时,仍会用到它。
功能0FH和10H是FCB方式下的打开和关闭文件。功能11H和12H是FCB方式下的文件搜索。功能13H用于删除文件,功能16H用于创建文件并打开。功能17H用于文件换名,功能23H用于获取文件大小(以记录数为单位),功能29H用于将文件名分析并填充到FCB表中。
记录操作功能(Record Function)
这部分功能负责文件的读写操作。功能1AH用于设置数据传输区(DTA)地址,功能2FH用于获取DTA地址。功能3FH和40H是句柄方式下最核心的读写功能,非常灵活。功能42H用于移动文件指针,可从文件头、当前位置或文件尾开始计算偏移量,实现文件的随机访问。功能5CH用于对文件区域加锁或解锁,适用于大文件的多进程共享控制。功能68H则强制将文件缓冲区中的数据提交到磁盘,即“刷盘”。
另外,对于FCB方式,也有一整套顺序读写(14H、15H)和随机读写(21H、22H、27H、28H)功能,它们围绕当前记录号和相对记录数进行操作。
内存分配功能(Memory-Allocation Function)
这部分是DOS内存管理的基本手段。功能48H用于分配一块内存,功能49H用于释放一块内存,功能4AH用于调整已分配内存块的大小(例如程序加载后发现空间不足,可尝试扩大)。功能58H用于读取或设置系统的内存分配策略(如“最先适应”、“最佳适应”)。
系统功能(System Function)
这些功能提供对DOS系统底层状态、环境和中断向量的访问。
功能25H和35H是一对:前者用于设置指定中断号的中断向量,后者用于获取中断向量,这对编写TSR程序或劫持系统行为至关重要。功能30H用于获取DOS版本号。功能33H用于读取或设置Break标志。功能38H用于读取或设置国家信息。功能44H是IOCTL(输入输出控制),功能多样,能获取设备信息、控制设备行为,应用范围广泛。
功能50H和51H用于设置和读取当前程序段前缀(PSP)地址。功能59H用于获取丰富的扩展错误信息,比简单的错误码更详细。功能5EH和5FH涉及网络重定向和打印机配置,是早期网络功能的一部分。功能63H用于读取前导字节表。功能65H和66H用于读取扩展国家信息和代码页。功能5D0AH则是一个逆向操作,可设置扩展的错误信息。
进程控制功能(Process-Control Function)
这部分是程序的生命周期管理。功能00H和4CH都用于终止当前进程,但4CH可带一个返回码给父进程。功能26H用于创建一个新的PSP,用于手工准备程序环境。功能31H是TSR(终止并驻留)的经典实现,程序退出但代码驻留在内存中。功能4BH是EXEC加载并执行另一个程序,可装入并执行,也可只装入到内存中。功能4DH允许父进程读取子进程的退出码。功能62H用于读取当前进程的PSP地址。
时间和日期功能(Time and Date Function)
功能2AH和2BH用于读取/设置系统日期,功能2CH和2DH用于读取/设置系统时间。这些功能为操作系统和应用程序提供基本的时间戳服务。
鼠标功能中断 INT 33H
在图形界面出现之前,鼠标是高级设备,其控制完全依赖INT 33H。这个中断的功能非常丰富。
功能00H用于初始化鼠标,是唯一必须预先执行的操作。功能01H和02H分别用于显示和隐藏鼠标指针。功能03H用于获取鼠标当前位置和按键状态,功能04H则可用于“瞬移”鼠标指针。功能05H和06H用于读取指定按钮被按下或释放的次数及发生时的位置。
功能07H和08H用于限制鼠标在屏幕上的水平和垂直移动范围。功能09H和0AH用于设置鼠标形状,无论是花哨的图形光标还是闪烁的文本方块。功能0BH用于读取鼠标的移动增量。功能0CH是最强大的功能之一,允许为鼠标的各种事件(移动、按下、释放)注册回调处理程序。
其余功能如设置鼠标灵敏度(1AH、1BH)、中断速率、显示页(1DH、1EH)、保存/恢复状态(15H、16H、17H)等,为高级用户提供了对鼠标行为的细致控制。
其它 DOS 中断
除了INT 21H和33H,还有一套标准的“基础设施”中断。
INT 20H是最古老、最简单的程序退出方式。INT 22H、23H、24H分别是程序终止、Ctrl+C和致命错误的处理程序地址,平时不要直接调用,系统会自动跳转。INT 25H和26H是底层的绝对磁盘读/写操作,跳过文件系统直接与扇区打交道,非常危险,需谨慎使用。INT 27H是早期的TSR实现。INT 28H是DOS空闲中断,当DOS等待键盘输入时反复触发。INT 2FH是多路中断,是DOS各个服务组件(如打印、网络)共享的中断号,用于相互通信。
BIOS 中断
BIOS中断比DOS中断更底层,直接与硬件交互。
显示服务(INT 10H)
这是BIOS中最复杂的中断之一,管理显卡和屏幕显示。
功能00H用于设置显示模式,AL寄存器列出了从40x25文本模式到640x480 256色等大量标准模式。功能01H到03H分别用于设置光标形状、定位光标和读取光标信息。功能04H用于读取光笔位置。功能05H用于设置显示页。功能06H和07H用于滚动屏幕窗口。功能08H到0AH用于读取或写入当前光标位置的字符及其属性。功能0BH用于设置调色板。功能0CH和0DH是直接读写图形象素的关键功能。功能0EH是Teletype模式输出一个字符。功能0FH用于读取当前显示模式。功能10H到1CH则提供一系列高级颜色、字体、配置和状态功能。
直接磁盘服务(INT 13H)
这是磁盘控制的中断,直接与硬盘和软盘驱动器通信。
功能00H用于复位磁盘系统。功能01H用于读取磁盘系统的最后一次操作状态。功能02H和03H分别是经典的读扇区和写扇区操作。功能04H用于校验扇区。功能05H用于格式化一个磁道。功能08H用于获取磁盘驱动器的关键参数(如柱面数、磁头数、扇区数)。其他功能如初始化硬盘参数、诊断、读取磁盘类型等,都是BIOS层维护磁盘健康的底层接口。
串行口服务(INT 14H)
INT 14H是管理串口通信的核心。功能00H用于初始化串口,设置波特率、奇偶校验、停止位和数据位。功能01H和02H分别用于向串口发送字符和从串口接收字符。功能03H用于读取串口和Modem的状态。在PS/2上,还有扩展的初始化功能。
杂项系统服务(INT 15H)
这是一个功能非常杂的中断,包含盒式磁带机支持、游戏杆、延迟、扩展内存操作、系统配置读取等大量功能。
例如功能86H提供毫秒级别的延迟功能,功能88H用于读取扩展内存(XMS)的大小,功能C0H用于读取系统环境配置表,功能87H可在实模式和保护模式下进行内存块移动等等,内容极其丰富。
键盘服务(INT 16H)
功能00H和10H用于从键盘读取一个字符(普通和扩展键盘)。功能01H和11H用于检查键盘缓冲区中是否有字符,非阻塞。功能02H和12H用于读取键盘的标志位(如Shift、Ctrl、Alt的状态)。功能03H可设置键盘的重复率和延迟。功能04H控制键盘是否发出“咔嗒”声。
并行口服务(INT 17H)
功能00H用于向打印机输出一个字符。功能01H用于初始化打印机接口。功能02H用于读取打印机的状态(是否空闲、无纸、出错等)。
时钟服务(INT 1AH)
功能00H和01H用于读取/设置时钟“滴答”计数(系统启动以来的次数)。功能02H到05H用于读取/设置CMOS中的时间和日期(年月日时分秒)。功能06H和07H用于设置和清除闹钟。功能80H则用于设置系统声音的来源。
直接系统服务(其它 BIOS 中断)
还有一系列被保留给CPU或硬件的专用中断号。例如INT 00H是除零中断,INT 01H是单步中断(Debug用),INT 02H是非屏蔽中断,INT 05H是打印屏幕,INT 08H是时钟滴答,INT 09H是键盘硬件中断等等。这些都是体系结构的一部分,虽然平时开发不直接调用,但在做底层驱动或调试时,它们无处不在。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
GPT-Red:释放稳健的自我完善能力
GPT-Red是一种自动化红队模型,通过自我对弈强化学习训练,可规模化发现漏洞并生成对抗数据。将其用于训练GPT-5 6后,直接提示注入故障减少6倍,在保留能力的同时显著提升稳健性,为模型安全自我改进开辟新路径。
Consensys曾让朝鲜关联开发者接触系统一个月未造成影响
区块链公司Consensys证实,一名通过第三方引入的开发者与朝鲜有关联,其接触系统约一个月后被发现并切断权限。调查确认无资产或数据损失,未植入恶意代码,但事件暴露了朝鲜背景团体渗透数字资产企业的风险模式。
黑客教你破解电子邮箱账号的三种方法详细步骤
电子邮件虽然便捷高效,但你真的了解其背后的安全风险吗?从邮件发送、传输到接收的每一个环节,都可能潜藏着漏洞,让攻击者有机可乘,轻松破解邮箱账号、窃取邮件内容。接下来,我们将逐一剖析这些薄弱环节,帮助您全面掌握电子邮件安全防护要点。 一、利用邮件服务器操作系统的漏洞 邮件服务器软件通常运行在特定操作系
黑客破解验证码机制的常见方法
验证码这东西,大家应该都不陌生。简单说,就是把一串随机数字或符号生成图片,再在图片里加一些干扰像素,防止OCR直接识破。用户得靠肉眼识别出来,输入表单提交给网站验证,通过后才能继续操作。很多网站为了挡住机器人的自动注册、登录、灌水,都用了这套技术。 但问题来了——很多验证码实现其实漏洞百出。比如直接
手机数据泄露大揭秘:你的信息到底安全吗?
如果你给自己的手机设置了PIN码,甚至复杂到自己都忘了,或者用了更高级的指纹解锁,你是不是就觉得手机里的信息固若金汤了?实际上,这种做法对于大多数普通用户来说,确实算得上安全。但换个角度,对于那些真正盯上你手机里数据的人来说,一次简单的充电,就可能让所有防护形同虚设。现如今,手机早已不只是一个通信工
- 热门数据榜
相关攻略
2026-07-18 22:34
2026-07-18 22:34
2026-07-18 22:30
2026-07-18 22:29
2026-07-18 22:29
2026-07-18 22:29
2026-07-18 22:29
2026-07-18 22:09
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

