1. 中断服务: 10H 视频服务
1.1 服务号: 0 设置视频模式
- 输入:
- AH: 0
- AL: 模式
- 输出: 无
- 影响寄存器:AX, SP, BP, SI, DI
模式设置表
| 模式 | 显示行数 | 颜色数 | 适配器 |
|---|---|---|---|
| 0 | 40 x 25 | Black & White text | CGA, EGA, VGA |
| 1 | 40 x 25 | Color text | CGA, EGA, VGA |
| 2 | 80 x 25 | Black & White text | CGA, EGA, VGA |
| 3 | 80 x 25 | Color text | CGA, EGA, VGA |
| 4 | 320 x 200 | 4 | CGA, EGA, VGA |
| 5 | 320 x 200 | Black & White | CGA, EGA, VGA |
| 6 | 640 x 200 | 2 (on or off) | CGA, EGA, VGA |
| 7 | 80 x 25 | Monochrome | MDA, EGA, VGA |
| 8 | 160 x 200 | 16 | PCjr |
| 9 | 320 x 200 | 16 | PCjr |
| A | 640 x 200 | 1 | PCjr |
| B | Reserved for future use | ||
| C | Reserved for future use | ||
| D | 320 x 200 | 16 | EGA, VGA |
| E | 640 x 200 | 16 | EGA, VGA |
| F | 640 x 350 | Monochrome | EGA, VGA |
| 10H | 640 x 350 | 16 | EGA, VGA |
| 11H | 640 x 480 | 2 | VGA |
| 12H | 640 x 480 | 16 | VGA |
| 13H | 320 x 200 | 256 | VGA |
CGA - Color Graphics Adapter 彩色图形适配器
EGA - Enhanced Graphics Adapter 增强图形适配器
VGA - Video Graphics Array 视频图形阵列
MDA - Monochrome Display Adapter 单色字符显示适配器
PCjr - IBM PC junio 缩写,是IBM公司于1984年推出的一款面向家庭和学校市场的低端个人电脑产品
PC convertible - IBM推出了首台笔记本电脑
当模式修改了,屏幕会清空。但不要用这个服务当做清空屏幕服务,因为这个操作比正常的屏幕清空服务(06H或者07H服务)时间要长。为了避免屏幕清空(仅支持 PCjr, EGA, and PC convertible)可以把AL的高位置1(bit 7= 1)
图形模式不显示光标。修改视频模式同时也会修改光标尺寸。
对于PCjr, CGA和EGA模式0,2,5 和模式1,3,4一样除了Color burst是禁用。("Color burst" 控制是否在显示器显示颜色:当Color burst打开,显示颜色,当关闭,颜色不显示。RGB不被Color burst状态影响
Function updates byte at 40:49. Bit 7 of byte 40:87 (EGA/VGA display data area) is set to the value of AL bit 7.
例子:
mov al, 13h
mov ah, 0
int 10h
1.2 服务号: 1 设置光标尺寸
通过设置光标的开始和结束行来调整光标尺寸。
- 输入:
- AH = 1
- CH = 光标开始行(bits 4-0) 选项(bits 5-7)
- CL = 光标结束行(bits 4-0)
- 说明:当CH的bit 5=0 光标可见,bit 5=1 光标不可见。
- 输出: 无
- 影响寄存器: AX, SP, BP, SI, DI
例子:
; 隐藏文本光标闪烁:
mov ch, 32 ; 0010 0000
mov ah, 1
int 10h
; 显示标准的文本闪烁光标:
mov ch, 6 ;0000 0110
mov cl, 7 ;0000 0111
mov ah, 1
int 10h
; 显示盒状闪烁光标:
mov ch, 0 ;0000 0000
mov cl, 7 ;0000 0111
mov ah, 1
int 10h
; 备注:一些bios需要CL 设置 >= 7,
; 否则就不能正常显示光标形状
1.3 服务号: 2 设置光标位置
为指定的显示页设置光标位置。
- 输入:
- AH = 02h
- BH = 显示页页号
- DH = 行号
- DL = 列号
- 输出: 无
- 影响寄存器: AX, SP, BP, SI, DI
这个服务可以设置活跃页面或者非活跃页面的光标位置。
在图形模式,这个服务设置光标逻辑位置,尽管光标本身不显示(在图形模式不显示光标)。
要让光标不可见,可把它位置调整到第25行。
显示的左上角是DH = 0h, DL = 0h,当右下角是DH = 18h (24), DL = 27h (39)是40行模式或者DL = 4Fh (79)是80行模式。
服务05h可以看不同显示模式的合法页码列表。因为这个服务不去检查,所以如果你指定了非法的页码会出现不确定的结果。图形模式的页码是0。
1.4 服务号: 3 读取光标位置和尺寸
报告指定显示页光标位置(行号和列号)和尺寸。
- 输入:
- AH = 03h
- BH = 显示页页码
- 输出:
- CH = 光标开始行号
- CL = 光标结束行号
- DH = 行号
- DL = 列号
- 影响寄存器: AX, SP, BP, SI, DI
1.5 服务号: 4 读取光笔位置
报告光笔位置和状态。
- 输入:
- AH = 04h
- 输出:
- AH = 状态 (0 = 未触发, 1 = 已触发)
- BX = 像素列号(0-639)
- CH = 像素线号(0-199)
- CX = 模式0fh-10h时像素线号(0-nnn)
- DH = 字符行号(0-24)
- DL = 字符列号(0-39 或者 0-79)
- 影响寄存器: AX, SP, BP, SI, DI
位置报告有两种形式:字符模式位置(行在DH,列在DL)和像素位置(激光线在CH,列/点 在BX)。
像素坐标对于光笔位置是不精确的。y坐标始终是2的倍数,同时x坐标是4的倍数在320 x 200模式下,是8的倍数在640 x 200图形模式下。
1.6 服务号: 5 设置活跃显示页
设置活跃显示页。
- 输入:
- AH = 05h
- AL = 显示页页号
- 输出:无
- 影响寄存器:AX, SP, BP, SI, DI
| 视频模式 | 合法页面 |
|---|---|
| 00h | 0-7 |
| 01h | 0-7 |
| 02h | 0-3 |
| 03h | 0-3 |
| 04h | 0 |
| 05h | 0 |
| 06h | 0 |
| 07h | 0 |
| 08h | 0 |
| 09h | 0 |
| 0ah | 0 |
| 0dh | 0-7 |
| 0eh | 0-3 |
| 0fh | 0-1 |
| 10h | 0-1 |
1.7 服务号: 6 向上滚动窗口
把指定窗口向上滚动指定行数
- 输入:
- AH = 06h
- AL = 滚动行数(如果是0, 清空整个窗口)
- BH = 空行的显示属性
- CH = 左上角行号
- CL = 左上角列号
- DH = 右下角行号
- DL = 右下角列号
- 输出:无
- 影响寄存器:AX, SP, BP, SI, DI
当所有行向上移动,线会插入到底部。新线会填充指定显示属性的空字符(在BH)。窗口顶部的线会消失。
如果滚动行数指定为0,整个窗口填充空字符。用服务 07H 可以向下滚动窗口。
这个服务只影响活动显示页。
1.8 服务号: 7 向下滚动窗口
将指定窗口向下滚动指定行数。
- 输入:
- AH = 07h
- AL = 要滚动的行数(如果为 0,则清除整个窗口)
- BH = 空行的显示属性
- CH = 左上角的行号
- CL = 左上角的列号
- DH = 右下角的行号
- DL = 右下角的列号
- 输出:无
- 影响寄存器:AX, SP, BP, SI, DI
行插入顶部,所有行都向下移动。新行用指定显示属性的空白字符(BH中的值)填充在窗口底部消失的行会丢失。
如果要滚动的行数指定为 0,则整个窗口都被空白填充。使用服务06h向上滚动窗口。
此服务仅影响当前活动的显示页面。
1.9 服务号: 8 读取光标处的字符和属性
报告指定显示页面的当前光标位置处字符的 ASCII 值和(在文本模式下)属性。
- 输入:
- AH = 08h
- BH = 显示页码(仅限文本模式)
- 输出:
- AH = 字符的属性(文本模式)
- AL = 字符的 ASCII 值
- 影响寄存器:AX, SP, BP, SI, DI
在图形模式下,不需要指定显示页面。
可以获取任何页面的当前字符和属性,即使该页面不是当前活动页面。
在图形模式下,如果服务无法识别字符模式,则在AL中返回00h。
使用服务09h写入具有指定属性的字符。
1.10 服务号: 9 在光标处写入字符和属性
显示具有指定属性的指定字符指定次数。
- 输入:
- AX = 09h
- AL = 字符的ASCII值
- BH = 显示页面(仅限文本模式)
- BL = 属性/颜色
- CX = 写字次数
-输出:无
- 影响寄存器:AX, SP, BP, SI, DI
显示从指定显示页面上的当前光标位置开始,但光标本身不移动。
在文本模式下,超出屏幕右侧的字符换行到下一行;在图形模式下,它们不会。
此服务将控制字符显示为可打印的字符,而不是它们的光标控制等价物。 例如,如果AL为13,则将显示音符,而不是回车。
在图形模式下,如果属性(BL)设置了第7位,则显示字符的颜色位与当前字符的颜色位进行异或。您可以使用此功能写入字符然后擦除它们。
该服务与0ah服务的区别在于该服务允许用户指定显示属性字节。
1.11 服务号: 10 在光标处写入字符和属性
Interrupt 10H Service 10 : 在光标处写字符
显示指定字符指定次数。
- 输入:
- AX = 0ah
- AL = 字符的ASCII值
- BH = 显示页面(仅限文本模式)
- CX = 写字次数
- 输出:无
- 影响寄存器:AX, SP, BP, SI, DI
显示从指定显示页面上的当前光标位置开始,但光标本身不移动。
服务09h用于图形模式,因为它允许更改颜色。
在文本模式下,超出屏幕右侧的字符换行到下一行;在图形模式下,它们不会。
此服务将控制字符显示为可打印的字符,而不是它们的光标控制等价物。 例如,如果AL为13,则将显示音符,而不是回车。
该服务与服务0ah的区别在于该服务不允许用户指定显示属性字节。该服务将光标处的当前属性用于新字符。
1.12 服务号: 11 设置调色板
为各种显示模式选择调色板。
- 输入:
- AX = 0bh
- AL = 字符的ASCII值
- BH = 调色板颜色ID(0或1)
- BL = 与颜色ID(0-31)一起使用的颜色或调色板值
- 输出:无
- 影响寄存器:AX, SP, BP, SI, DI
如果BH=0(调色板颜色 ID)为0,则:
- 为320x200图形模式设置背景颜色
- 设置文本模式的边框颜色
- 为640x200图形模式设置前景色
BL包含要使用的颜色。EGA将设置
- 640x200图形模式的背景颜色
为文本模式设置边框颜色时,颜色16-31将选择高强度背景集。
如果 BH = 1(调色板颜色 ID)为 1,则
- 选择320x200图形模式的调色板
BL中的值决定使用哪个调色板组合,定义如下
调色板0(BL = 0)
| 索引值 | 颜色 |
|---|---|
| 0 | 当前背景颜色 |
| 1 | 绿色 |
| 2 | 红色 |
| 3 | 棕色 |
调色板1(BL = 1)
| 索引值 | 颜色 |
|---|---|
| 0 | 当前背景颜色 |
| 1 | 青色 |
| 2 | 品红 |
| 3 | 白色 |
1.13 服务号: 12 写入像素
在指定的屏幕坐标处写入指定颜色的像素点。
- 输入:
- AH = 0ch
- AL = 像素颜色
- CX = 像素的水平位置
- DX = 像素的垂直位置
- BH = 显示页码(超过1页的图形模式)
- 输出:无
- 影响寄存器:AX, SP, BP, SI, DI
合法值
| 模式 | CX (水平) | DX (垂直) | AL (像素颜色) | BH (页码) |
|---|---|---|---|---|
| 04h | 0-319 | 0-199 | 0-3 | |
| 05h | 0-319 | 0-199 | 0-3 | |
| 06h | 0-639 | 0-199 | 0-1 | |
| 0Dh | 0-319 | 0-199 | 0-15 | 0-7 |
| 0Eh | 0-639 | 0-199 | 0-15 | 0-3 |
| 0Fh | 0-639 | 0-349 | 0-1 | 0-1 |
| 10h | 0-639 | 0-349 | 0-15 | 0-1 |
如果设置了第7位指定像素颜色(AL),则像素的颜色位与指定坐标处的当前像素的颜色位进行异或。您可以使用此功能写入字符然后擦除它们。
对于模式0dh到10h,需要在BH中提供页码。
1.14 服务号: 13 读取像素
报告指定屏幕坐标处的像素颜色。
- 输入:
- AH = 0dh
- CX = 像素的水平位置
- DX = 像素的垂直位置
- BH = 显示页码(超过1页的图形模式)
- 输出:
- AL = 像素颜色
- 影响寄存器:AX, SP, BP, SI, DI
对于模式0d10h,需要在中提供页码。
1.15 服务号: 14 以电传打字(TTY)模式写入字符
在当前光标位置写入字符并前进光标。
- 输入:
- AH = 0eh
- AL = 要写的字符
- BL = 前景色(仅限图形模式)
- BH = 显示页码(仅限文本模式)
- 输出:无
在文本模式下,显示的字符保留前一个占据屏幕位置的字符的显示属性。在图形模式下,每次调用此服务时都需要指定前景色(以BL为单位)。
在文本模式下,可以写入字符以显示活动页面以外的页面。
该服务响应字符 07h(响铃)、08h(退格)、0ah(换行)和 odh(回车)的ASCII含义。所有其他ASCII值都会显示一个字符,光标移动一个位置。
如果光标位于行尾,则换行到下一行。如果光标位于屏幕最后一行的末尾,则屏幕向上滚动,整个新行的显示属性取自前一行的最后一个字符。
1.16 服务号: 15 获取当前视频模式
报告当前视频模式、该视频模式中每行的字符数以及当前显示页面。
- 输入:
- AH = 0fh
- 输出:
- AL = 视频模式
- AH = 每行的字符列数
- BH = 活动显示页码
- 影响寄存器:AX, SP, BP, SI, DI
1.17 服务号: 16 设置调色板寄存器
在PCjr和EGA上设置调色板和过扫描(边界)寄存器。
- 输入:
- AH = 10h
- AL = 子服务
| 子服务 | 描述 |
|---|---|
| 0 | 设置调色板寄存器 BL = 调色板寄存器 BH = 要设置的值 |
| 1 | 设置过扫描(边框)颜色寄存器 BH = 要设置的值 |
| 2 | 设置调色板寄存器和边界寄存器 ES:DX = 指向颜色列表的指针 |
| 3 | 切换加强/闪烁位 BL = 0(启用强化) BH = 1 (启用闪烁) |
- 影响寄存器:AX, SP, BP, SI, DI
EGA 和 PCjr 显示器上有 16 个调色板寄存器和 1 个过扫描(边界)寄存器。 该服务使用户可以控制这些寄存器。 下面解释这四个子服务
子服务 0 (设置调色板寄存器)
16 个调色板寄存器中的每一个都接受 64 个值中的 1 个。 BH中的值格式如下
- Bit 7 - 预留
- Bit 6 - 预留
- Bit 5 - secondary red
- Bit 4 - secondary green
- Bit 3 - secondary blue
- Bit 2 - red
- Bit 1 - green
- Bit 0 - blue
二次色的强度为 1/3,而普通颜色的强度为 2/3。例如,BH = 02h 将产生绿色,BH = 10h将产生暗绿色,BH = 12h将产生亮绿色。
调色板寄存器的默认值与彩色图形适配器 (CGA) 相同,定义如下:
| 调色板寄存器 | 颜色值 | 颜色 |
|---|---|---|
| 00h | 00h | Black |
| 01h | 01h | Blue |
| 02h | 02h | Green |
| 03h | 03h | Cyan |
| 04h | 04h | Red |
| 05h | 05h | Magenta |
| 06h | 14h | Brown |
| 07h | 07h | White |
| 08h | 38h | Dark Gray |
| 09h | 39h | Light Blue |
| 0ah | 3ah | Light Green |
| 0bh | 3bh | Light Cyan |
| 0ch | 3ch | Light Red |
| 0dh | 3dh | Light Magenta |
| 0eh | 3eh | Yellow |
| 0fh | 3fh | Bright White |
子服务 1(设置过扫描(边界)寄存器)
此子服务设置边框颜色。增强型彩色显示器仅支持200行模式下的过扫描
子服务 2(设置所有调色板寄存器和过扫描寄存器)
ES:DX指向一个17字节的颜色列表,其中前16个字节由16个调色板寄存器的新值组成,最后一个字节是新的过扫描寄存器值。
子服务 3(切换增强/闪烁位)
通常属性字节的第7位用于指示前景闪烁。使用此子服务,位7可以指示前景闪烁(BL = 1)或背景增强(BL = 0)。
1.18 服务号: 17 字符生成器
在文本和图形模式下将增强图形适配器(EGA)上的字体更改为预定义字体或用户定义字体。
- 输入:
- AH = 11h
- AL = 子服务
| Subservice | Description |
|---|---|
| 00h |
加载用户定义的字体(文本模式) ES:BP = 指向字体表的指针 CX = 字符数 DX = 表格字符偏移 BL = 要加载的字体块 (0-3) BH = 每个字符的字节数 |
| 01h |
加载 8 x 14 字符字体(单色集) BL = 要加载的字体块 (0-3) |
| 02h |
加载 8 x 8 双点字符字体(文本模式) BL = 要加载的字体块 (0-3) |
| 03h |
设置块说明符(文本模式) BL = 位3、2:当属性字节的位 3 为 1 时选择要使用的块 (0-3) 位 1、0:当属性字节的位 3 为 0 时选择要使用的块 (0-3) |
| 10h |
加载用户定义的文本字体(文本模式) BL = 位 3、2:当属性字节的位 3 为 1 时选择要使用的块 (0-3) 位 1、0:当属性字节的位 3 为 0 时选择要使用的块 (0-3) |
| 11h |
加载 8 x 14 字符字体(单色集)(文本模式) BL = 要加载的字体块 (0-3) |
| 12h |
加载 8 x 8 双点字符字体(文本模式) BL = 要加载的字体块 (0-3) |
| 20h |
加载用户定义的 8 x 8 字符字体(图形模式) ES:BP = 指向图形字符 128-255 的用户图形表的指针。 INT 1fh 设置为此指针 |
| 21h |
加载用户自定义字符字体(图形模式) ES:BP = 指向图形字符 0-128 的用户图形表的指针 CX = 每个字符的字节数 BL = 行数 00h : DL 包含行数 01h : 14行 02h : 25行 03h : 43行 |
| 22h |
加载 ROM 8 x 14 字符字体(图形模式) BL = 行数(与子服务 21h 格式相同) |
| 23h |
加载 ROM 8 x 8 双点字符字体(图形模式) BL = 行数(与子服务 21h 格式相同) |
| 30h |
返回字体信息 BH = 返回的指针类型 00h : 当前 INT 1fh 指针 01h :当前 INT 44h 指针 02h : ROM 8 x 14字体指针 03h : ROM 8 x 8双点字体指针 04h : ROM 8 x 8双点字体指针(顶部) 05h : ROM 文本交替9 x 14指针 |
- 输出:
- ES:BP = 指向 BH 中指定的表的指针
- CX = 每个字符扫描行
- DL = 行
子服务 00h、01h 和 02h 执行模式设置,完全改变视频状态但不清除显示缓冲区(屏幕未清除)。
子服务 10h、11h 和 12h 分别与 00h、01h 和 02h 相同,但有以下区别:
- 子服务 10h、11h 和 12h依赖页面0作为活动页面
- 重新计算每个字符的字节数
- 重新计算行数
- 重新计算再生缓冲区的长度
- 五个光标控制 (CRTC) 寄存器被重新编程
子服务 10h-23h 只能在模式设置后立即调用。
子服务 03h(设置块说明符)允许您同时显示两个字符集,每个字符集来自一个 256 个字符的块,因此允许 512 个字符集。当使用512字符集时,建议通过执行服务10h, 子服务00h(AX=1000h) 并设置BX =0712h 来设置8个一致颜色的调色板。
64k EGA 内存的每个增量都允许使用另一个字体块。默认值64k允许一个字体块,而256k的EGA内存最多允许四个字体块。每个块包含256个字符的定义。
定义字符时,在图形模式中设置时,必须提供完整的 256 个字符集(与文本模式中的字符集定义进行比较,其中可以加载任意数量的字符 - 每个块最多256个)。
子服务21h将加载256个字符定义。视频模式4、5 和6仅使用前128个字符。所有其他模式使用全部256个字符。
1.19 服务号: 18 备用选择
返回有关增强显示适配器(EGA)的信息,并允许选择替代EGA打印屏幕例程。
- 输入:
- AH = 12h
- AL = 子服务
10h : 返回 EGA 信息
20h : 选择替代 EGA 打印屏幕例程
- 输出:
- BH = 显示模式生效
00h : 颜色模式(3Dxh 地址范围)
01h : 单色模式(3Bxh 地址范围) - BL = EGA内存
00h : 64k
01h : 128k
02h : 192k
03h : 256k
- CH = 适配器位
- CL = 开关设置
- BH = 显示模式生效
CL(开关设置)中返回的值代表EGA上的DIP开关设置。适配器位 (CH) 定义如下
7 6 5 4 3 2 1 0
x x x x . . . . 未使用
. . . . x x . . 预留
. . . . . . x . FEAT1 (pin 17)
. . . . . . . x FEAT0 (pin 19)
要在行数更改时打印屏幕内容,请使用子服务20h(设置替代打印屏幕)安装一个打印屏幕例程,该例程将在行更改时正常工作。
1.20 服务号: 19 写字符串
将具有指定属性的字符串写入任何显示页面。
- 输入:
- AH = 13h
- AL = Subservice (0-3)
- BH = Display page number
- BL = Attribute (subservice 0 and 1)
- CX = Length of string
- DH = Row position where string is to be written
- DL = Column position where string is to be written
- ES:SP = Pointer to string to write
- 输出:无
- 影响寄存器:AX, SP, BP, SI, DI
此服务仅适用于日期为86年1月19日及之后的XT、AT、EGA和PC Convertibles。
该服务有四个子服务,如下所示:
- AL = 00h : 为所有字符分配BL中的属性; 不更新光标
- AL = 01h : 为所有字符分配BL中的属性; 更新光标
- AL = 02h : 在字符串中使用属性; 不更新光标
- AL = 03h : 在字符串中使用属性; 更新光标
在子服务0和1中,字符串中的所有字符都以相同的属性写入屏幕 - BL中指定的属性。
在子服务 2 和 3 中,每个字符的属性字节都可以在字符串本身中找到。 字符串本身由一个字符后跟其属性,另一个字符后跟其属性,依此类推。 字符串按原样直接复制到视频缓冲区。
在子服务0和2中,写入字符串后不会更新光标位置。
在子服务1和3中,光标移动到字符串中最后一个字符之后的第一个位置。
与服务0eh一样,服务13h对ASCII 07h(响铃)、08h(退格)、10h(换行)和 0dh(回车)做出适当的响应。打印所有其他字符。
1.21 服务号: 20 LCD处理器
- 输入:
- AH = 14h
- AL = 子服务
| 子服务 | 描述 |
|---|---|
| 00h | 加载用户指定的字体 ES:BP = 指向字体表的指针 CX = 要存储的字符数 (1 - 255) DX = 字符偏移到 RAM 字体缓冲区 BL = 要加载的字体块 0 : 主字体(块 0) 1 : 替代字体(块 1) BH = 每个字符的字节数 (1 -255) |
| 01h | 加载系统ROM默认字体块 BL = 要加载的字体块 0 : 主字体(块 0) 1 : 替代字体(块 1) |
| 02h | LCD高亮度属性映射 BL = 映射方案 0 : 忽略高强度属性 1 : 将高强度映射到反向视频 2 : 将高强度映射到下划线 3 : 映射高强度以选择替代字体 |
- 输出:无
1.22 服务号: 21 返回PC convertible物理显示特性
返回备用显示适配器类型和描述当前显示特性的表。此服务仅适用于 PC convertible。
- 输入:
- AH = 15h
- 输出:
- AX = 备用显示适配器类型
00h : 没有备用适配器
5140h : LCD
5153h : CGA型显示器
5151h : 单色型显示器
- ES:DI = 指向7字当前显示适配器表的指针
- AX = 备用显示适配器类型
显示适配器表的格式如下:
- Word 1 : 显示模式编号
- Word 2 : Vertical PELs per meter
- Word 3 : Horizontal PELs per meter
- Word 4 : 垂直 PEL 总数
- Word 5 : 水平 PEL 总数
- Word 6 : 以微米为单位的 PEL 高度(垂直方向)
- Word 7 : 以微米为单位的 PEL 宽度(水平方向)
PC Convertible 显示适配器表
| Word | 单色 | CGA | LCD (CGA) | LCD (单色) |
|---|---|---|---|---|
| 1 | 5151h | 5153h | 5140h | 5140h |
| 2 | 0 | 0498h | 08e1h | 0 |
| 3 | 0 | 0a15h | 0987h | 0 |
| 4 | 0 | 00c8h | 00c8h | 0 |
| 5 | 0 | 0280h | 0280h | 0 |
| 6 | 0 | 0352h | 0172h | 0 |
| 7 | 0 | 0184h | 0172h | 0 |
请注意,PC Convertible 技术参考手册错误地记录了用作 CGA 的 LCD 的词6和7。上面列出了正确的值。
2. 中断服务: 11H 阅读设备清单
返回系统上已安装设备的列表。
- 输入:无
- 输出:
- AX = 设备代码
设备代码 (AX)
F E D C B A 9 8 7 6 5 4 3 2 1 0
x x . . . . . . . . . . . . . . 安装的打印机数量
. . x . . . . . . . . . . . . . 已安装内部调制解调器
. . . x . . . . . . . . . . . . 游戏适配器安装了吗? (在 PCJr 上始终为 1)
. . . . x x x . . . . . . . . . RS-232 端口数量
. . . . . . . x . . . . . . . . 预留
. . . . . . . . x x . . . . . . 磁盘数量 - 1(即 0=1 个磁盘)
. . . . . . . . . . x x . . . . 初始视频模式(见下文)
. . . . . . . . . . . . x . . . 预留
. . . . . . . . . . . . . x . . 预留
. . . . . . . . . . . . . . x . 安装了数学协处理器?
. . . . . . . . . . . . . . . x 1=存在软盘; 0=不存在磁盘
AX 中返回的值与存储在内存位置 0:0410h 中的值相同,该值在上电测试期间被初始化。
对于 IBM PC、XT 和 PCjr,第2位和第3位用于列出系统板上安装的RAM量,增量为16K。例如,00表示16K,而11表示64K。
位0仅表示系统是否有一个或多个软盘驱动器。 请参阅第6位和第7位以了解实际存在的软盘数量。要确定安装的硬盘数量,请使用 INT 服务8。