欢迎光临散文网 会员登陆 & 注册

程序查询和程序中断方式的区别

2023-03-19 22:03 作者:我爱计算机科学  | 我要投稿

程序查询和程序中断方式都是cpu和IO设备进行交互的方式:

1、程序查询方式:

程序查询方式是由CPU不断查询I/O设备是否已做好准备,从而控制I/O设备与主机交换信息。

2、程序中断方式:

CPU在启动I/O设备后,不查询设备是否已准备就绪,继续执行原来的程序,只是当I/O设备准备就绪并向CPU发出中断请求后才给予响应。

我们考察下面程序中断的工作方式:

主程序中,首先设定主程序与中断程序进行通信的变量counter初值0。

图1

接下来主程序就进入循环等待的状态,不断查询变量counter的值是否为10,这个查询的过程就是等待中断发生的过程。

上图的new08h就是中断程序的入口地址。这个入口地址什么时候装入cpu得以运行呢?

上图表明,中断程序的入口地址要得以运行,必须由芯片8259向cpu发出中断请求信号,也就是一个高电平信号。

当芯片8259向cpu发出中断请求信号以后,中断入口地址new08h就被装入到cpu的CS和IP寄存器,包括段地址和偏移地址。

这个中断程序每执行一次,变量counter就加1,同时每执行一次就打印出一个字符串。

打印10次以后,counter将变为10,从而使得图1中的主程序的循环等待状态结束,并执行主程序后面的语句。

再看看程序查询方式:

以串口通信为例:

注意上图8251芯片中的引脚TxRDY和RxRDY。

上图是相应的寄存器。

当进行双机通信的时候,

将一方定义为发送方,发送方CPU查询到TxRDY有效时,则CPU向8251A并行输出一个待发送的字节数据;

L1: MOV  DX,3F9H

 IN  AL,DX

 AND AL,01H  ;查询TxRDY是否有效

  JZ L1   ;无效则等待

 MOV  DX,3F8H

 MOV  AL,[DI]  ;向8251A输出一个字节数据

 OUT  DX,AL 

 INC  DI    ;修改地址指针

  LOOP L1     ;未传送完,则继续下一个

上面语句中,每发送一个字节的数据,都必须查询一次引脚TxRDY的状态。如果无效,则循环查询;如有效,则发送数据。但与程序中断方式相比,不存在将中断程序入口地址装入

cpu寄存器的动作。

两者区别简单概括:

1:程序中断方式必须有一个中断程序的入口地址,当中断发生时,这个地址被装入cpu,从而使得相应的中断程序得以运行;

2:程序查询方式没有中断程序,只是不断地查询某个引脚,有效则执行相应的指令,否则循环查询;

3:程序中断方式的程序一般分为主程序和中断程序两部分;

4:两种方式都有一个循环查询的指令部分。


程序查询和程序中断方式的区别的评论 (共 条)

分享到微博请遵守国家法律