63、BIOS与MS - DOS中断详解

BIOS与MS - DOS中断详解

1. 引言

在计算机系统中,BIOS和MS - DOS中断是非常重要的机制,它们为系统和应用程序提供了与硬件和操作系统进行交互的接口。下面将介绍一些常用的中断号及其功能。

1.1 中断分组

  • PC中断通用列表 :对应存储在内存前1024字节的中断向量表。
  • INT 21h :MS - DOS功能。
  • INT 10h :视频BIOS功能。
  • INT 16h :键盘BIOS功能。
  • INT 33h :鼠标功能。

由于MS - DOS有许多不同的版本,以及各种DOS扩展程序和PC硬件控制器,记录PC中断是一项艰巨的任务。Ralf Brown的中断列表是中断信息的权威来源,可在网上以多种形式获取。

2. PC中断

PC中断涵盖了多种类型,不同的中断号对应着不同的功能,以下是常见PC中断号及其描述的表格:
| 编号 | 描述 |
| ---- | ---- |
| 0 | 除法错误,CPU生成,尝试除以零时激活。 |
| 1 | 单步,CPU生成,CPU陷阱标志置位时激活。 |
| 2 | 不可屏蔽中断,外部硬件,发生内存错误时激活。 |
| 3 | 断点,CPU生成,执行0CCh(INT 3)指令时激活。 |
| 4 | INTO检测到溢出,CPU生成,执行INTO指令且溢出标志置位时激活。 |
| 5 | 打印屏幕,可通过INT 5指令或按下Shift - PrtSc键激活。 |
| 6 | 无效操作码(80286+) |
| 7 | 处理器扩展不可用(80286+) |
| 8 | IRQ0:系统定时器中断,每秒更新BIOS时钟18.2次。对于自定义编程,可参考INT 1Ch。 |
| 9 | IRQ1:键盘硬件中断,按下键时激活,从键盘端口读取键并存储在键盘预输入缓冲区。 |
| 0A | IRQ2:可编程中断控制器 |
| 0B | IRQ3:串行通信(COM2) |
| 0C | IRQ4:串行通信(COM1) |
| 0D | IRQ5:固定磁盘 |
| 0E | IRQ6:磁盘中断,进行磁盘寻道时激活。 |
| 0F | IRQ7:并行打印机 |
| 10 | 视频服务,用于操作视频显示的例程。 |
| 11 | 设备检查,返回一个字,显示连接到系统的所有外设。 |
| 12 | 内存大小,在AX中返回内存量(以1024字节块为单位)。 |
| 13 | 软盘服务,重置磁盘控制器,获取最近磁盘访问的状态,读写物理扇区,以及格式化磁盘。 |
| 14 | 异步(串行)端口服务,初始化并读写异步通信端口,返回端口状态。 |
| 15 | 磁带控制器 |
| 16 | 键盘服务,读取和检查键盘输入。 |
| 17 | 打印机服务,初始化、打印并返回打印机状态。 |
| 18 | ROM BASIC,执行ROM中的磁带BASIC。 |
| 19 | 引导加载程序,重启MS - DOS。 |
| 1A | 时间,获取自机器开机以来的定时器滴答数,或设置计数器为新值。滴答每秒发生18.2次。 |
| 1B | 键盘中断,按下CTRL - BREAK时由INT 9h调用此中断处理程序。 |
| 1C | 用户定时器中断,空例程,每秒执行18.2次,可由自定义程序使用。 |
| 1D | 视频参数,指向包含视频控制器芯片初始化和信息的表。 |
| 1E | 软盘参数,指向包含软盘控制器初始化信息的表。 |
| 1F | 图形表,5x8图形字体,存储ASCII码高于127的所有扩展图形字符的表。 |
| 20 | 终止程序,终止COM程序(建议使用INT 21h功能4Ch)。 |
| 21 | MS - DOS服务 |
| 22 | MS - DOS终止地址,指向父程序或进程的地址,当前程序结束时,这将是返回地址。 |
| 23 | MS - DOS中断地址,按下CTRL - BREAK时,MS - DOS跳转到此处。 |
| 24 | MS - DOS关键错误地址,当前程序出现关键错误(如磁盘介质错误)时,DOS跳转到该地址。 |
| 25 | 绝对磁盘读取(已过时) |
| 26 | 绝对磁盘写入(已过时) |
| 27 | 终止并驻留(已过时) |
| 28 - FF | (保留) |
| 33 | 微软鼠标,跟踪和控制鼠标的功能。 |
| 34 - 3E | 浮点仿真 |
| 3F | 覆盖管理器 |
| 40 - 41 | 固定磁盘服务,固定磁盘控制器。 |
| 42 - 5F | 保留:特殊用途 |
| 60 - 6B | 可供应用程序使用 |
| 6C - 7F | 保留:特殊用途 |
| 80 - F0 | 保留:由ROM BASIC使用 |
| F1 - FF | 可供应用程序使用 |

以下是PC中断处理流程的mermaid流程图:

graph TD;
    A[中断发生] --> B{判断中断号};
    B -->|0 - 7| C[CPU相关中断处理];
    B -->|8 - 0F| D[硬件中断处理];
    B -->|10 - 1F| E[系统服务中断处理];
    B -->|20 - 27| F[MS - DOS相关处理];
    B -->|28 - FF| G[保留或特殊处理];

3. INT 21H函数(MS - DOS服务)

通过INT 21h可使用众多MS - DOS服务,以下是常用功能的简要概述表格:
| 功能 | 描述 |
| ---- | ---- |
| 1 | 从标准输入读取字符,若没有字符准备好,则等待输入。返回:AL = 字符。 |
| 2 | 向标准输出写入字符。接收:DL = 字符。 |
| 3 | 从标准辅助输入(串行端口)读取字符。 |
| 4 | 向标准辅助输出(串行部分)写入字符。 |
| 5 | 向打印机写入字符。接收:DL = 字符。 |
| 6 | 直接控制台输入/输出。若DL = FFh,从标准输入读取等待的字符;若DL为其他值,将DL中的字符写入标准输出。 |
| 7 | 无回显的直接字符输入,等待标准输入的字符。返回:AL = 字符。 |
| 8 | 无回显的字符输入,等待标准输入设备的字符。返回:AL = 字符,字符不回显,可由Ctrl - Break终止。 |
| 9 | 向标准输出写入字符串。接收:DS:DX = 字符串地址。 |
| 0A | 缓冲键盘输入,从标准输入设备读取字符串。接收:DS:DX指向预定义的键盘结构。 |
| 05 | 检查标准输入状态,检查是否有输入字符等待。返回:AL = 0FFh表示字符准备好;否则,AL = 0。 |
| 0C | 清除键盘缓冲区并调用输入函数,清除控制台输入缓冲区,然后执行输入函数。接收:AL = 所需功能(1、6、7、8或0Ah) |
| 0E | 选择默认驱动器。接收:DL = 驱动器号(0 = A,1 = B等)。 |
| 0F - 18 | FCB文件功能(已过时) |
| 19 | 获取当前默认驱动器。返回:AL = 驱动器号(0 = A,1 = B等) |
| 1A | 设置磁盘传输地址。接收:DS:DX包含磁盘传输区域的地址。 |
| 25 | 设置中断向量,将中断向量表中的条目设置为新地址。接收:DS:DX指向插入表中的中断处理例程;AL = 中断号。 |
| 26 | 创建新程序段前缀。接收:DX = 新PSP的段地址。 |
| 27 - 29 | FCB文件功能(已过时) |
| 2A | 获取系统日期。返回:AL = 星期几(0 - 6,星期日 = 0),CX = 年,DH = 月,DL = 日。 |
| 2B | 设置系统日期。接收:CX = 年,DH = 月,DL = 日。返回:AL = 0表示日期有效。 |
| 2C | 获取系统时间。返回:CH = 小时,CL = 分钟,DH = 秒,DL = 百分之一秒。 |
| 2D | 设置系统时间。接收:CH = 小时,CL = 分钟,DH = 秒,DL = 百分之一秒。返回:AL = 0表示时间有效。 |
| 2E | 设置验证标志。接收:AL = MS - DOS验证标志的新状态(0 = 关闭,1 = 打开),DL = 00h。 |
| 2F | 获取磁盘传输地址(DTA)。返回:ES:BX = 地址。 |
| 30 | 获取MS - DOS版本号。返回:AL = 主版本号,AH = 次版本号,BH = OEM序列号,BL:CX = 24位用户序列号 |
| 31 | 终止并驻留,终止当前程序或进程,将部分程序保留在内存中。接收:AL = 返回码,DX = 请求的段落数。 |
| 32 | 获取MS - DOS驱动器参数块。接收:DL = 驱动器号。返回:AL = 状态;DS:BX指向驱动器参数块。 |
| 33 | 扩展中断检查,指示MS - DOS是否检查Ctrl - Break。 |
| 34 | 获取INDOS标志的地址(未记录) |
| 35 | 获取中断向量。接收:AL = 中断号。返回:ES:BX = 中断处理程序的段/偏移量。 |
| 36 | 获取磁盘可用空间(仅FAT 16)。接收:DL = 驱动器号(0 = 默认,1 = A等)。返回:AX = 每簇扇区数,若驱动器号无效则为FFFFh;BX = 可用簇数,CX = 每扇区字节数,DX = 每驱动器簇数。 |
| 37 | 获取开关字符(未记录) |
| 38 | 获取或设置国家信息 |
| 39 | 创建子目录。接收:DS:DX指向包含路径和目录名的ASCIIZ字符串。返回:若进位标志置位,AX = 错误代码。 |
| 3A | 删除子目录。接收:DS:DX指向包含路径和目录名的ASCIIZ字符串。返回:若进位标志置位,AX = 错误代码。 |
| 3B | 更改当前目录。接收:DS:DX指向包含新目录路径的ASCIIZ字符串。返回:若进位标志置位,AX = 错误代码。 |
| 3C | 创建或截断文件,创建新文件或将旧文件截断为零字节,打开文件进行输出。接收:DS:DX指向包含文件名的ASCIIZ字符串,CX = 文件属性。返回:若进位标志置位,AX = 错误代码;否则,AX = 新文件句柄。 |
| 3D | 打开现有文件,打开文件进行输入、输出或输入 - 输出。接收:DS:DX指向包含文件名的ASCIIZ字符串,AL = 访问代码(0 = 读取,1 = 写入,2 = 读写)。返回:若进位标志置位,AX = 错误代码;否则,AX = 新文件句柄。 |
| 3E | 关闭文件句柄,关闭由文件句柄指定的文件或设备。接收:BX = 之前打开或创建的文件句柄。返回:若进位标志置位,AX = 错误代码。 |
| 3F | 从文件或设备读取,从文件或设备读取指定数量的字节。接收:BX = 文件句柄,DS:DX指向输入缓冲区,CX = 要读取的字节数。返回:若进位标志置位,AX = 错误代码;否则,AX = 读取的字节数。 |
| 40 | 向文件或设备写入,向文件或设备写入指定数量的字节。接收:BX = 文件句柄,DS:DX指向输出缓冲区,CX = 要写入的字节数。返回:若进位标志置位,AX = 错误代码;否则,AX = 写入的字节数。 |
| 41 | 删除文件,从指定目录中删除文件。接收:DS:DX指向包含文件名的ASCIIZ字符串。返回:若进位标志置位,AX = 错误代码。 |
| 42 | 移动文件指针,根据指定方法移动文件读写指针。接收:CX:DX = 移动文件指针的距离(字节),AL = 方法代码,DX = 文件句柄。方法代码如下:0 = 从文件开头移动,1 = 移动到当前位置加上偏移量,2 = 移动到文件末尾加上偏移量。返回:若进位标志置位,AX = 错误代码。 |
| 43 | 获取/设置文件属性,获取或设置文件的属性。接收:DS:DX = 指向ASCIIZ路径和文件名的指针,CX = 属性,AL = 功能代码(1 = 设置属性,0 = 获取属性)。返回:若进位标志置位,AX = 错误代码。 |
| 44 | I/O设备控制,获取或设置与打开的设备句柄相关的设备信息,或向设备句柄发送控制字符串,或从设备句柄接收控制字符串。 |
| 45 | 复制文件句柄,为当前打开的文件返回新的文件句柄。接收:DX = 文件句柄。返回:若进位标志置位,AX = 错误代码。 |
| 46 | 强制复制文件句柄,强制CX中的句柄引用与DX中句柄相同位置的同一文件。接收:DX = 现有文件句柄,CX = 第二个文件句柄。返回:若进位标志置位,AX = 错误代码。 |
| 47 | 获取当前目录,获取当前目录的完整路径名。接收:DS:SI指向64字节的区域以保存目录路径,DL = 驱动器号。返回:DS:SI处的缓冲区填充路径,若进位标志置位,AX = 错误代码。 |
| 48 | 分配内存,分配请求数量的段落内存,以16字节块为单位。接收:DX = 请求的段落数。返回:AX = 分配块的段,BX = 可用最大块的大小(以段落为单位),若进位标志置位,AX = 错误代码。 |
| 49 | 释放分配的内存,释放之前由功能48h分配的内存。接收:ES = 要释放块的段。返回:若进位标志置位,AX = 错误代码。 |
| 4A | 修改内存块,修改分配的内存块以包含新的块大小,块将缩小或增大。接收:ES = 块的段,DX = 请求的段落数。返回:若进位标志置位,AX = 错误代码,BX = 可用的最大块数。 |
| 4B | 加载或执行程序,为另一个程序创建程序段前缀,将其加载到内存并执行。接收:DS:DX指向包含程序驱动器、路径和文件名的ASCIIZ字符串;ES:BX指向参数块,AL = 功能值。AL中的功能值:0 = 加载并执行程序;3 = 加载但不执行(覆盖程序)。返回:若进位标志置位,AX = 错误代码。 |
| 4C | 终止进程,终止程序并返回MS - DOS或调用程序的常用方法。接收:AL = 8位返回码,可由DOS功能4Dh或批处理文件中的ERRORLEVEL命令查询。 |
| 4D | 获取进程的返回码,获取由功能调用31h或功能调用4Ch生成的进程或程序的返回码。返回:AL = 程序返回的8位代码,AH = 退出类型,0 = 正常终止,1 = 由CTRL - BREAK终止,2 = 由关键设备错误终止,3 = 由调用功能调用31h终止。 |
| 4E | 查找第一个匹配文件,查找与给定文件规范匹配的第一个文件名。接收:DS:DX指向包含驱动器、路径和文件规范的ASCIIZ字符串;CX = 搜索时使用的文件属性。返回:若进位标志置位,AX = 错误代码;否则,当前DTA填充文件名、属性、时间、日期和大小。通常在调用此功能之前调用DOS功能调用1Ah(设置DTA)。 |
| 4F | 查找下一个匹配文件,查找与给定文件规范匹配的下一个文件名,此功能总是在DOS功能4Eh之后调用。返回:若进位标志置位,AX = 错误代码;否则,当前DTA填充文件信息。 |
| 54 | 获取验证标志。返回:AH = 磁盘I/O的验证标志(0 = 关闭;1 = 打开)。 |
| 56 | 重命名/移动文件,重命名文件或将其移动到另一个目录。接收:DS:DX指向指定当前驱动器、路径和文件名的ASCIIZ字符串;ES:DI指向新路径和文件名。返回:若进位标志置位,AX = 错误代码。 |
| 57 | 获取/设置文件日期/时间,获取或设置文件的日期和时间戳。接收:AL = 0获取日期/时间,AL = 1设置日期/时间;BX = 文件句柄,CX = 新文件时间,DX = 新文件日期。返回:若进位标志置位,AX = 错误代码;否则,CX = 当前文件时间,DX = 当前文件日期。 |
| 58 | 获取或设置内存分配策略 |
| 59 | 获取扩展错误信息,返回有关MS - DOS错误的附加信息,包括错误类、位置和建议操作。接收:BX = MS - DOS版本号(版本3.xx为零)。返回:AX = 扩展错误代码,BH = 错误类,BL = 建议操作,CH = 位置。 |
| 5A | 创建临时文件,在指定目录中生成唯一的文件名。接收:DS:DX指向以反斜杠(\)结尾的ASCIIZ路径名,CX = 所需文件属性。返回:若进位标志置位,AX = 错误代码;否则,DS:DX指向附加新文件名的路径。 |
| 5B | 创建新文件,尝试创建新文件,若文件名已存在则失败,防止覆盖现有文件。接收:DS:DX指向包含路径和文件名的ASCIIZ字符串。返回:若进位标志置位,AX = 错误代码。 |
| 5C - 61 | 省略 |
| 62 | 获取程序段前缀(PSP)地址。返回:BX = 当前程序PSP的段值。 |
| 7303h | 获取磁盘可用空间,填充包含详细磁盘空间信息的结构。接收:AX = 7303h,ES:DI指向ExtGetDskFreSpeStruc结构,CX = ExtGetDskFreSpcStruc结构的大小,DS:DX指向包含驱动器名称的空终止字符串。返回:ExtGetDskFreSpcStrue填充磁盘信息。 |
| 7305h | 绝对磁盘读写,读取单个磁盘扇区或扇区组,在Windows NT、2000和XP下不起作用。接收:AX = 7305h,DS:BX = DISK10结构变量的段/偏移量,CX = 0FFFFh,DL = 驱动器号(0 = 默认,1 = A,2 = B,3 = C等),SI = 读写标志。 |

4. INT 10H函数(视频BIOS)

INT 10h函数主要用于视频BIOS相关操作,以下是这些函数的详细介绍表格:
| 功能 | 描述 |
| ---- | ---- |
| 0 | 设置视频模式,将视频显示设置为单色、文本、图形或彩色模式。接收:AL = 显示模式。 |
| 1 | 设置光标行,确定光标起始和结束扫描行。接收:CH = 光标起始行,CL = 光标结束行。 |
| 2 | 设置光标位置,在屏幕上定位光标。接收:BH = 视频页面,DH = 行,DL = 列。 |
| 3 | 获取光标位置,获取光标在屏幕上的位置及其大小。接收:BH = 视频页面。返回:CH = 光标起始行,CL = 光标结束行,DH = 光标行,DL = 光标列。 |
| 4 | 读取光笔,读取光笔的位置和状态。返回:CH = 像素行,BX = 像素列,DH = 字符行,DL = 字符列。 |
| 5 | 设置显示页面,选择要显示的视频页面。接收:AL = 所需页面号。 |
| 6 | 向上滚动窗口,向上滚动当前视频页面上的窗口,用空格替换滚动的行。接收:AL = 滚动行数,BH = 滚动行属性,CX = 左上角行和列,DX = 右下角行和列。 |
| 7 | 向下滚动窗口,向下滚动当前视频页面上的窗口,用空格替换滚动的行。接收:AL = 滚动行数,BH = 滚动行属性,CX = 左上角行和列,DX = 右下角行和列。 |
| 8 | 读取字符和属性,读取当前光标位置的字符及其属性。接收:BH = 显示页面。返回:AH = 属性字节,AL = ASCII字符代码。 |
| 9 | 写入字符和属性,在当前光标位置写入字符及其属性。接收:AL = ASCII字符,BH = 视频页面,CX = 重复因子。 |
| 0A | 写入字符,仅在当前光标位置写入字符(无属性)。接收:AL = ASCII字符,BH = 视频页面,BL = 属性,CX = 复制因子。 |
| 0B | 设置调色板,为彩色或EGA适配器选择一组可用颜色。接收:AL = 显示模式,BH = 活动显示页面。 |
| 0C | 写入图形像素,在彩色图形模式下写入图形像素。接收:AL = 像素值,CX = X坐标,DX = Y坐标。 |
| 0D | 读取图形像素,读取给定位置的单个图形像素的颜色。接收:CX = X坐标,DX = Y坐标。 |
| 0E | 写入字符,向屏幕写入字符并推进光标。接收:AL = ASCII字符代码,BH = 视频页面,DL = 属性或颜色。 |
| 0F | 获取当前视频模式,获取当前视频模式。返回:AL = 视频模式,BH = 活动视频页面。 |
| 10 | 设置视频调色板(仅EGA),设置视频调色板寄存器、边框颜色或闪烁/强度位。接收:AL = 功能代码(00 = 设置调色板寄存器,01 = 设置边框颜色,02 = 设置调色板和边框颜色,03 = 设置/重置闪烁/强度位),BH = 颜色,BL = 要设置的调色板寄存器。若AL = 2,ES:DX指向颜色列表。 |
| 11 | 字符生成器,为EGA显示选择字符大小。例如,43行显示使用8x8字体,25行显示使用8x14字体。 |
| 12 | 备用选择功能,返回有关EGA显示的技术信息。 |
| 13 | 写入字符串(仅PC/AT),向视频显示写入文本字符串。接收:AL = 模式,BH = 页面,BL = 属性,CX = 字符串长度,DH = 行,DL = 列,ES:BP指向字符串。 |

以下是INT 10h函数操作视频显示的mermaid流程图:

graph TD;
    A[调用INT 10h函数] --> B{判断功能号};
    B -->|0 - 1| C[模式和光标设置];
    B -->|2 - 3| D[光标位置操作];
    B -->|4| E[光笔读取];
    B -->|5| F[显示页面设置];
    B -->|6 - 7| G[窗口滚动];
    B -->|8 - 10| H[字符和属性操作];
    B -->|11 - 12| I[EGA相关设置];
    B -->|13| J[字符串写入];

5. 键盘BIOS INT 16h函数

键盘BIOS INT 16h函数用于处理键盘相关操作,具体如下表所示:
| 功能 | 描述 |
| ---- | ---- |
| 03h | 设置键盘重复率。接收:AH = 03h,AL = 5,BH = 重复延迟,BL = 重复率。延迟值:0 = 250ms;1 = 500ms;2 = 750ms;3 = 1000ms。重复率从0(最快)到11h(最慢)。无返回值。 |
| 05h | 将键推入缓冲区,将键盘字符和相应的扫描码推入键盘预输入缓冲区。接收:AH = 05h,CH = 扫描码,CL = 字符代码。若预输入缓冲区已满,进位标志将置位,AL = 1。无返回值。 |
| 10 | 等待按键,等待输入字符和键盘扫描码。接收:AH = 10h。返回:AH = 扫描码,AL = ASCII字符。(功能00h使用旧类型键盘实现相同功能) |
| 11 | 检查键盘缓冲区,查看键盘预输入缓冲区中是否有字符等待。接收:AH = 11h。返回:若有键等待,其扫描码在AH中返回,ASCII码在AL中返回,零标志清除(字符仍留在输入缓冲区);若无键等待,零标志置位。(功能01h使用旧类型键盘实现相同功能) |
| 12 | 获取键盘标志,返回存储在低RAM中的键盘标志字节。接收:AH = 12h。返回:键盘标志在AX中。(功能02h使用旧类型键盘实现相同功能) |

6. 鼠标函数(INT 33h)

INT 33h鼠标函数通过AX寄存器接收功能号,以下是这些函数的详细信息表格:
| 功能 | 描述 |
| ---- | ---- |
| 0000h | 重置鼠标并获取状态,接收:AX = 0000h。重置鼠标并确认其可用。若找到鼠标,将其置于屏幕中心,显示页面设置为视频页面0,隐藏指针,设置鼠标键到像素的比率和速度为默认值,鼠标移动范围设置为整个屏幕区域。 |
| 0001h | 显示鼠标指针,接收:AX = 0001h。无返回值。鼠标驱动程序会记录此函数的调用次数。 |
| 0002h | 隐藏鼠标指针,接收:AX = 0002h。无返回值。鼠标不可见时仍会跟踪其位置。 |
| 0003h | 获取鼠标位置和状态,接收:AX = 0003h。返回:BX = 鼠标按钮状态,CX = X坐标(像素),DX = Y坐标(像素)。 |
| 0004h | 设置鼠标位置,接收:AX = 0004h,CX = X坐标(像素),DX = Y坐标(像素)。无返回值。 |
| 0005h | 获取按钮按下信息,接收:AX = 0005h,BX = 按钮ID(0 = 左,1 = 右,2 = 中)。返回:AX = 按钮状态,BX = 按钮按下计数器,CX = 最后一次按钮按下的X坐标,DX = 最后一次按钮按下的Y坐标。 |
| 0006h | 获取按钮释放信息,接收:AX = 0006h,BX = 按钮ID(0 = 左,1 = 右,2 = 中)。返回:AX = 按钮状态,BX = 按钮释放计数器,CX = 最后一次按钮释放的X坐标,DX = 最后一次按钮释放的Y坐标。 |
| 0007h | 设置水平限制,接收:AX = 0007h,CX = 最小X坐标(像素),DX = 最大X坐标(像素)。无返回值。 |
| 0008h | 设置垂直限制,接收:AX = 0008h,CX = 最小Y坐标(像素),DX = 最大Y坐标(像素)。无返回值。 |

以下是鼠标操作通过INT 33h函数处理的mermaid流程图:

graph TD;
    A[调用INT 33h函数] --> B{判断功能号};
    B -->|0000h| C[鼠标重置与状态获取];
    B -->|0001h - 0002h| D[鼠标指针显示与隐藏];
    B -->|0003h - 0004h| E[鼠标位置操作];
    B -->|0005h - 0006h| F[鼠标按钮信息获取];
    B -->|0007h - 0008h| G[鼠标移动范围设置];

综上所述,BIOS和MS - DOS中断为计算机系统与硬件、操作系统的交互提供了丰富的功能接口。通过对这些中断及其相关函数的了解和运用,开发者能够实现各种系统级和应用级的操作,如文件管理、设备控制、视频显示、键盘和鼠标输入处理等。在实际编程中,需要根据具体需求选择合适的中断和函数,并注意参数的设置和返回值的处理,以确保程序的正确性和稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值