【本章小结】
1. 程序直接控制I/O的方式:
这是一种使用I/O指令直接在端口级上进行数据传送的编程方式,这种方式有时需要查询外设的状态,如果外设处于准备好或空闲状态,则CPU通过接口中的数据寄存器进行输入或输出,如果外设没有准备好或是忙状态,CPU就查询等待,不再作有效的工作。
2. 中断程序的设计方法:
对于要求以中断方式工作的I/O设备,它们的中断类型已由硬件连线确定(如图8.3)。主程序为中断所做的准备工作如下:
(1) 保存原中断向量(INT 21H的35H功能),设置新的中断向量(INT 21H的25H功能);
(2) 设置设备的中断屏蔽位(仅对可屏蔽中断);
(3) 设置CPU的中断允许位(开中断);
(4) 在主程序结束前,恢复原中断向量。
主程序完成了上述准备工作后,I/O设备即以完全随机的方式产生中断。当CPU响应了中断请求,中断系统将自动完成以下工作:
(1) CPU接收外设的中断类型号;
(2) 当前的FLAGS、CS、IP的内容入栈保存;
(3) 清除IF、TF;
(4) 根据中断类型号取出中断向量送CS和IP;
(5) 转中断处理子程序。
中断处理子程序的编写方法:
(1)保存工作寄存器内容;
(2)如允许中断嵌套,则开中断(STI);
(3)处理中断任务;
(4)关中断 (CLI);
(5)送中断结束命令(EOI)给中断命令寄存器(仅对硬件中断);
(6)恢复工作寄存器内容;
(7)返回被中断的程序(IRET)。