2

有一些例程可以通过两者来实现INT 21HINT 16H前者用于 DOS,后者用于 BIOS)。但是,确切的区别尚不清楚(至少对我而言!)。

例如,以下例程从键盘读取字符

1) INT 21H, service 01 用 echo 读取

MOV   AH,01
INT   21H

2) INT 16H, service 01 for key press

MOV   AH,01
INT   16H

假设一个程序正在等待一个键。例如,一个等待 Y/N 的简单的基于文本的向导。为了回显按下的键,首选哪一个?21H 或 16H。

我认为应该在没有操作系统时调用 BIOS 例程(例如在 POST 期间“按 F1 继续”)。这就是全部?是否有任何示例表明操作仅由其中一个而不是两者都完成?

4

1 回答 1

3

为了回显按下的键,首选哪一个?21H 或 16H。

当然不是BIOS 功能,因为它不会回显任何内容!

INT 16H,服务 01 按键

此功能将仅检查密钥是否可用。它不会将其从键盘缓冲区中删除。

一般来说,您需要注意 DOS 输入函数可以使用重定向。输入可能根本不是来自键盘。它可能来自文件或其他来源。

于 2015-10-29T11:15:43.037 回答