int 21h 服务 01h、07h 和 08h 之间有什么区别,我应该在什么时候使用其中一个?

What's the difference between the int 21h services 01h, 07h and 08h and when should I use one over the other?

我知道服务 01h 接受输入并将其打印到屏幕上,而服务 07h 和 08h 接受输入但不将其打印到屏幕上。除此之外,这些服务之间有什么区别?我什么时候应该使用其中一种服务?

区别是:

int 0x21,ah=0x01: 将字符回显到屏幕上。其他 2 个选项没有。

Int 0x21, ah=0x07: 没有特殊字符检查的原始输入(例如“control+c”)。当你需要自己处理特殊字符时应该使用它。

int 0x21, ah=0x08: 是否正常输入,有特殊字符检查(如“control+c”)。当您希望 DOS 为您处理特殊字符时应该使用它。

什么时候应该使用它们,答案是“30 多年前”。因为它缺乏任何安全性,不支持多任务(或 GUI)并且不能正确处理国际化;回到 1990 年代,每个人都拥有 DOS;从那以后,硬件发生了重大变化(多个 CPU、更大的内存、networking/internet、触摸屏、多个显示器……),它根本无法支持。现在已经到了 DOS 不如完全不使用任何 OS(并且仅使用 UEFI shell)的地步。