识别中断源最简单的一种方法是查询法(Pooling Method)。这种方法所需要的硬件非常简单,几乎全部用软件来实现。
  如图7.4所示,采用查询法来识别中断源的过程分如下三步:
  第一步,所有中断源公用一条中断请求线发出中断请求
  一般可以直接采用"线或"的办法来实现,即所有中断源的中断服务请求都连接在一起送往CPU。无论是那一个,也不管有多少个中断源发出中断服务请求,在得到处理机响应后都进入同一个中断服务程序入口。
  第二步,转入公共的中断服务程序入口
  方法很简单,在得到处理机的中断响应之后,隐含执行一条无条件间址转移指令:
          JMP @INTR
  在主存储器的INTR单元中存放中断服务程序的入口地址。
图 7.4 识别中断源的询问法

  第三步,用软件逐个测试中断源的状态
  凡是发出中断服务请求的中断源,它的完成标志位(DONE)必然被置位,而忙标志(BUSY)一般被清除。
  测试的顺序实际上就是中断源的中断优先级。因此,查询法又被称为跳步链程序法(Skip-chain Program Methed)或依次测试法。

  下面,举一个例子来说明查询法的工作原理。
  有打印机、键盘输入和终端显示三个中断源,在进入公共的中断服务程序之后,可以通过执行如下的一小段中断测试程序,就可以很容易地找到这三个中断源的中断服务程序入口:
  INTR: SKIP DZ, PRN ;测试打印机PRN的完成标志DONE是否为"0",
  如果DONE=0,跳过下一条指令,否则继续执行下一条指令。
  JMP PRINT ;打印机的DONE=1,转打印机的中断服务程序入口PRINT
  SKIP DZ, KEY ;测试键盘输入KEY的完成标志DONE=0?
  JMP KEYBORD ;键盘输入的DONE=1,转它的中断服务程序入口KEYBORD
  SKIP DN, MNT ;测试终端显示MNT的完成标志DONE=1?
  JMP ERROR ;所有中断源均没有请求中断服务,转错误处理程序入口ERROR
  JMP MONITOR ;终端显示MNT的DONE=1,转它的中断服务程序入口MONITOR
  PRINT: …… ;打印机中断服务程序
  RNTI ;返回到中断点
  KEYBORD: …… ;键盘输入的中断服务程序
  RNTI ;返回到中断点
  MONITOR: …… ;终端显示器输出的中断服务程序
  RNTI ;返回到中断点
  ERROR: …… ;出错处理程序
  RNTI ;返回到中断点

  查询法的主要优点是灵活性好。因为用程序对设备进行测试的顺序实际上就是中断源的中断优先级,而测试顺序是程序员可以通过软件任意改变的。
  查询法的主要缺点是速度比较慢,特别是在中断源比较多的时候。