在汇编时不使用io.h读取输入

时间:2017-06-09 14:34:55

标签: assembly 32-bit masm32

我正在使用masm32来学习编程32位汇编程序。我想知道如何直接读取输入(如16位汇编,调用中断或类似的东西)而不使用io.h预定义的宏和procs?有可能吗?

感谢

1 个答案:

答案 0 :(得分:-1)

使用像DOS这样的旧操作系统,你可以调用例如INT 16h向BIOS请求按键。不幸的是,在类似NT的Windows下,这是不可能的。由于一系列原因(安全性和稳定性是最重要的),对BIOS中断的访问权限由Windows内核控制,因此仅限于常规应用程序。

换句话说,您必须直接或间接通过Windows内核调用获取所有击键。没有其他办法。你调用操作系统,操作系统调用内核,内核调用BIOS。

但无论如何,如果您仍然想要使用中断,则有可能 - 以选择MASM32作为目标语言之后变得更加依赖平台为代价。

在32位Windows下,可以通过INT 2Eh访问NTDLL中的许多Windows API。问题是不同版本的Windows(有时甚至是同一版本的不同版本)在INT 2Eh函数中有所不同。

在开始研究此主题之前,请三思而后行是否需要这种级别的平台依赖性。