在阅读了《程序是怎样跑起来的》第十一章后,我明白了支撑硬件输入输出是IN指令和OUT指令。IN指令通过指定端口号的端口输入数据,并将其存储在CPU内部的寄存器中。OUT指令则是把CPU寄存器中存储的数据输出到指定端口号的端口。
IRQ是暂停正在运行的程序并跳转到其他程序运行的必要机制。假如有多个外围设备进行中断请求,CPU也会为难。如果我们在I/O控制器中和CPU中间加个名为中断控制器的IC就可以起到缓冲效果。这样中断控制器会把从多个外围设备发出的中断请求传递给CPU。CPU接收到请求后会把运行的主程序中断。并切换到中断处理程序,中断处理程序就是把CPU所有寄存器的数值保存到内存的栈中,在中断处理程序中。完成外围设备的输入输出后,把栈中保存的数值还原到CPU寄存器中,再继续进行对主程序的处理。