程序查询方式
在IO设备准备阶段,CPU一直在等待阶段,没有执行其他指令或者其他工作,CPU效率极低程序中断方式
CPU被一定程度的从输入输出中解放出来在IO进行准备时,CPU不进行查询,只有当外部设备开始进行信息交换时,CPU会暂停现行程序,为输入输出进行服务外部设备准备好接收或者输入设备后,会向cpu提出中断请求DMA 方式
CPU发出启动IO指令,IO设备在DMA控制器的控制下完成数据准备,当数据准备好后,由DMA控制器发出DMA请求,占用总线使用权,占用一个存取周期,进行外部设备和内存的数据交换,在这一个周期中CPU不能使用总线对内存进行访问三种方式的CPU工作效率的比较
键盘 键盘防抖动(震颤)的方法 软件:汇编语言,加延迟delay,delay的时间非常小硬件:基本RS触发器 如何判断键盘哪个键被按下? 将键盘编码,把键翻译成ASCII码值 两个键被按下,哪个被认为真正按下的? 根据按下时间来判断 IO接口 IO接口的基本组成 程序查询的接口电路 CPU通过地址线给出外部设备地址,设备选择电路把自己的设备地址和地址线上的地址进行比较,如果相同,说明启动的是连接在接口电路上的设备,SEL有效,启动命令也有效,对两个状态标记进行置位或者复位cpu发出命令,设备还没开始工作,则D为0,B为1,表示设备开始工作,处于忙的状态设备接收到B的标记信号后以及启动命令后,开始工作,通过数据线保存到DBR中,此时设备工作结束,通过状态线向接口电路送入工作结束信号此时D为1,表示数据已经准备就绪,B为0,设备工作已结束CPU通过数据线把数据进行读入 程序中断的接口电路 配置中断请求触发器和中断屏蔽触发器 如果INTR输出端为1,表示有中断请求,并且可以通过中断请求线告诉cpu外部设备有中断请求MASK的Q输出为1表示这个中断会被屏蔽,为0不会被屏蔽掉 中断排队器:硬件的话是链式排队器中断向量地址形成部件 中断向量和子程序入口地址区别 子程序入口地址存放在向量地址空间中 由硬件产生向量地址,再用向量地址找到入口地址 中断服务程序流程 中断服务程序流程 保护现场 程序断点的保护(进栈指令 保护pc) 中断隐指令完成寄存器内容的保护 进栈指令,保护ax,bx,cx等等 中断服务 执行中断处理小程序 恢复现场 出栈指令 中断返回 中断返回指令 单重中断和多重中断 单重:不允许中断现行的中断服务程序多重:允许级别更高的中断源中断现行的中断服务程序(中断的嵌套)