汇编:中断小问题
在WIN32下能调用BIOS的INT命令吗?书上说这些中断是BIOS厂商提供的,可又要要求在REAL-MODE16位下调用.为什么32位就不能调用这个中断?如果不能,那W...
在WIN32下能调用BIOS的INT命令吗?书上说这些中断是BIOS厂商提供的,可又要要求在REAL-MODE 16位下调用. 为什么32位就不能调用这个中断? 如果不能,那WINXP怎么办?它最终还是要调用BIOS的中断来执行一写输入输出命令.
展开
2个回答
展开全部
在WIN32下是不能调用BIOS的INT中断服务程序的。但微软为了以前dos系统下的应用程序可在win32系统中继续使用,提供了虚拟8086模式,即虚拟出一个dos系统供以前的dos16位程序运行,但是一些硬件中断功能,如读写硬盘的bios中断请求出于安全等因素考虑,还是不能成功执行。
Windows是出于系统的安全和可方便应用程序编程等方面的考虑,不支持直接的中断调用,因为中断是处于系统底层的东东,像dos下的中断功能,用中断号来指明功能,繁琐又容易出错,实在不方便编程,而且中断号、ah值等表示的功能号又是有限的,不能提供很多的系统功能。windows提供了API编程, 支持用函数名来调用系统服务,如ReadFile等,方便直观,易于编程。
另外win32系统在启动时可能是用到了BIOS中断,但在之后是不用BIOS中断的功能的,因为BIOS的代码是16位的,且只支持单线程,在32位多线程保护模式下工作是不合适而且是不能的。系统里有硬件驱动、内核等代码替代了bios的硬件io等功能。
Windows是出于系统的安全和可方便应用程序编程等方面的考虑,不支持直接的中断调用,因为中断是处于系统底层的东东,像dos下的中断功能,用中断号来指明功能,繁琐又容易出错,实在不方便编程,而且中断号、ah值等表示的功能号又是有限的,不能提供很多的系统功能。windows提供了API编程, 支持用函数名来调用系统服务,如ReadFile等,方便直观,易于编程。
另外win32系统在启动时可能是用到了BIOS中断,但在之后是不用BIOS中断的功能的,因为BIOS的代码是16位的,且只支持单线程,在32位多线程保护模式下工作是不合适而且是不能的。系统里有硬件驱动、内核等代码替代了bios的硬件io等功能。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询