硬件控制方法
1.应用和硬件的关系
在用C语言等高级编程语言开发的 Windows应用中,大家很少能接触到直接控制硬件的指令。 这是因为硬件的控制是由Windows 全权负责的 。
不过,Windows提供了通过应用来间接控制硬件的方法。利用操作系统提供的系统调用功能就可以实现对硬件的控制。在Windows中,系统调用称为API(图11-1)。各API就是应用调用的函数。这些函数的实体被存储在DLL文件中。
2.Window控制硬件时借助的是输入输出指令 。其中具有代表性的两个输入输出指令 就是IN和OUT。 这些指令也是汇编语言的助记符。 IN指令通过指定端口号的端口输入数据,并将其存储在CPU 内部的寄存器中。OUT指令则是把CPU寄存器中存储的数据, 输出到指定端口 号的端口 。
I/O是Input/Output的缩写。显示器、 键盘等外围设备都有各自专用的I/O控制器。I/O控制器中有用于临时保存输入输出数据的内存。这个内存就是端口。 端口(port)的字面意思是“港口”。 由于端口就像是在计算机主机和外围设备之间进行货物 (数据)装卸的港口,所以因此得名。I/O控制器内部的内存, 也称为寄存器。虽然都是寄存器,但它和 CPU内部的寄存器在功能上是不同的。 CPU内部的寄存器是用来进行数据运算处理的,而I/O 寄存器则主要是用来临时存储数据的。.
3.外围设备的中断请求
IRQ是用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制。该机制称为中断处理。 中断处理在硬件控制中担当着重要角色。因为如果没有中断处理, 就有可能出现处理无法顺畅进行的情况。从中断处理开始到请求中断的程序( 中断处理程序)运行结束之前,被中断的程序(主程序)的处理是停止的。 这种情况就类似于在处理文档的过程中有电话打进来, 电话就相当于中断处理。假如没有中断功能的话, 就必须等到文档处理完毕才可以接听电话。 这样就太不方便了。由此可见, 中断处理有着很大的价值。 就像接听完电话后返回到原来的文档作业一样, 中断处理程序运行结束后,处理也会返回到主程序中继续