本章主要讲的是访问硬件的方法。在上章中,我们讲述了汇编语言,那么在汇编语言中用于外部数据进行输入输出的命令是什么呢?当然是in指令和out指令。i/o的全称是什么呢?当然是input/output(输入/输出)。那么这里又有些问题,不过这些问题也是清晰易懂的。用于区分外部设备的编号是I/O地址和I/O端口号。IRQ的全称是中断请求(用于区分发出中断请求的外部设备的编号)。 DMA全称是什么直接访问内存。
在计算机中,要想要硬件工作,就一定要有软件。我们在前面几个章节中,也提到要想了解和访问CPU这个硬件,就需要使用编译器或汇编器生成本机代码,再将其加载到内存中运行。那么除了CPU和内存之外的硬件,其他硬件我们该如何访问呢?以前到时听说过,但是没有更深入的了解。
有些人会疑惑,那么应用程序会不会访问硬件呢? 其实在使用高级编程语言编写windows应用程序时,很少会直接访问硬件的指令。这是因为对硬件的访问已经由windows操作系统一起操作了。但是呢,操作系统还是为应用程序提供了间接访问硬件的方法,那就是系统调用,在windows中,系统调用又称之为API。
然而呢,windows 使用硬件输入输出来对硬件进行访问。也就是我们刚刚所讲的in/out。in指的是可以从指定编号输入数据,并将其存入CPU内部的寄存器。out指令是可以将CPU寄存器中的数据输出到指定编号的端口。
书中还给我们讲到外部设备的中断请求,以及通过中断实现实时处理能够快速传输大量数据的DMA,还有显示字符和图像的原理(对显存也有了更加多的了解)。