中断调用和子程序的调用的异同

1、两过程定义与作用

子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。

子程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。子程序在功能上具有相对的独立性,
在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。一般微机首先执行主程序,碰到调用指令就转去执行子程序,子
程序执行完后,返回指令就返回主程序断点(即调用指令的下一条指令),继续执行没有处理完的主程序,这一过程叫做(主程序)
调用子程序过程。

子程序结构可简化程序,防止重复书写错误,并可节省内存空间。计算机中经常把常用的各种通用的程序段编成子程序,提供给用户
使用。用户在自己编写的程序中,只要会调用这些子程序,就可大大简化用户编程的困难。

中断是计算机中央处理单元CPU与外设I/O交换数据的一种方式,除此方式外,还有无条件、条件(查询)、存贮器直接存取DMA
和I/O通道等四种方式。由于无条件不可靠,条件效率低,DMA和I/O通道两方式硬件复杂,而中断方式CPU效率高,因此一般大多采用
中断方式。中断概念是当计算机正在执行某一(主)程序时,收到一中断请求,如果中断响应条件成立,计算机就把正在执行的程序暂停
一下,去响应处理这一请求,执行中断服务程序,处理完服务程序后,中断返回指令使计算机返回原来还没有执行完的程序断点处继续执
行,这一过程称为中断过程。有了中断,计算机才能具有并行处理,实时处理和故障处理等重要功能。

2、两过程的联系与区别

2.1联系

中断与调用子程序两过程属于完全不同的概念,但它们也有不少相似之处。两者都需要保护断点(即下一条指令地址)、跳至子程序
或中断服务程序、保护现场、子程序或中断处理、恢复现场、恢复断点(即返回主程序)。两者都可实现嵌套,即正在执行的子程序再调
另一子程序或正在处理的中断程序又被另一新中断请求所中断,嵌套可为多级。

正是由于这些表面上的相似处,很容易使学生把两者混淆起来,特别是把中断也看为子程序,这就大错特错了。

2.2区别

中断过程与调用子程序过程相似点是表面的,从本质上讲两者是完全不一样的。

两者的根本区别主要表现在服务时间与服务对象不一样上。首先,调用子程序过程发生的时间是已知和固定的,即在主程序中的调用
指令(CALL)执行时发生主程序调用子程序,调用指令所在位置是已知和固定的。而中断过程发生的时间一般的随机的,CPU在执行某一
主程序时收到中断源提出的中断申请时,就发生中断过程,而中断申请一般由硬件电路产生,申请提出时间是随机的(软中断发生时间是固
定的),也可以说,调用子程序是程序设计者事先安排的,而执行中断服务程序是由系统工作环境随机决定的;其次,子程序完全为主程序
服务的,两者属于主从关系,主程序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。而中断服务程序与主程序两者一般
是无关的,不存在谁为谁服务的问题,两者是平行关系;第三,主程序调用子程序过程完全属于软件处理过程,不需要专门的硬件电路,而
中断处理系统是一个软、硬件结合系统,需要专门的硬件电路才能完全中断处理的过程;第四,子程序嵌套可实现若干级,嵌套的最多级数
由计算机内存开辟的堆栈大小限制,而中断嵌套级数主要由中断优先级数来决定,一般优先级数不会很大。

转载于:https://www.cnblogs.com/linuxbird/archive/2013/06/06/3121738.html

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中断方式和程序查询传输方式是两种不同的数据传输方式。 中断方式适用于需要立即响应的场合,例如外设设备产生了一个中断信号,需要立即处理。中断方式具有以下优: 1. 立即响应:中断方式可以在外设发出中断信号后立即响应,及时处理。 2. 灵活性:中断方式可以在程序执行过程中插入中断处理程序,不影响程序的正常执行。 3. 高效性:中断处理程序可以直接操作硬件设备,无需通过程序查询传输方式进行数据传输。 但是,中断方式也存在以下缺: 1. 处理复杂:中断处理程序需要处理中断请求、保存现场、执行中断服务程序、恢复现场等多个步骤,处理复杂。 2. 系统开销大:中断处理程序需要占用系统资源,会增加系统开销。 程序查询传输方式适用于数据量较小、响应时间要求不高的场合。程序查询传输方式具有以下优: 1. 简单明了:程序查询传输方式比较简单,易于实现。 2. 灵活性高:程序查询传输方式可以随时进行数据传输,灵活性高。 但是,程序查询传输方式也存在以下缺: 1. 响应时间较长:程序查询传输方式需要经过多个步骤才能完成数据传输,响应时间较长。 2. 系统开销大:程序查询传输方式需要占用系统资源,会增加系统开销。 中断过程和子程序调用过程是两种不同的程序执行方式。 中断过程是通过中断方式执行的程序,可以立即响应外设设备的中断请求。中断过程的执行流程如下: 1. 外设设备产生中断信号。 2. CPU响应中断信号,暂停当前程序执行,保存现场。 3. 执行中断服务程序,处理中断请求。 4. 恢复现场,继续执行原来的程序。 子程序调用过程是通过程序查询传输方式执行的程序,需要等到程序查询到该子程序后才能执行子程序调用过程的执行流程如下: 1. 程序执行调用子程序的语句。 2. 保存现场,跳转到子程序执行。 3. 子程序执行完毕,返回到原来的程序,恢复现场。 中断过程和子程序调用过程的不同主要在于执行流程和响应时间。中断过程可以立即响应外设设备的中断请求,执行流程较为复杂,响应时间较短;而子程序调用过程需要等待程序查询到该子程序后才能执行执行流程相对简单,响应时间较长。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值