中断响应和函数调用的区别剖析
C语言的中断服务函数
C语言的中断服务函数中断服务函数是一种特殊的函数,用于处理系统或外设发生的中断事件。
在C语言中,中断服务函数常用于嵌入式系统的开发中,用于实现硬件的响应和处理。
下面是关于C语言中断服务函数的详细介绍,包括定义、注册、实现和应用等方面。
一、中断服务函数的定义中断服务函数(Interrupt Service Routine,ISR)是一段特殊的代码,用于响应和处理中断事件。
它与普通的函数不同,不是由程序主动调用的,而是由系统或硬件触发的。
中断事件一般包括硬件的输入、定时器的溢出、软件触发等。
在C语言中,中断服务函数的定义方式与普通的函数类似,但需要使用特殊的关键字和参数。
如下是一个C语言中断服务函数的定义示例:```void interrupt_service_functio//中断处理代码```在上述示例中,`void`表示中断服务函数不返回值,`interrupt_service_function`是函数的名称。
根据不同的开发平台和编译器,中断服务函数的定义可能有所不同。
二、中断服务函数的注册要使用一个中断服务函数,需要将其注册到相应的中断源中。
中断源可以是系统的中断控制器,也可以是外设的中断引脚。
注册中断服务函数的目的是告诉系统,在相应中断事件发生时调用该函数。
以8051单片机为例,注册中断服务函数的方式如下所示:```void mairegister_interrupt_service_function(interrupt_service_functi on);//其他代码```在上述示例中,`register_interrupt_service_function`是用于将中断服务函数`interrupt_service_function`注册到系统中断控制器的函数。
在实际开发中,不同平台和配置会有不同的注册方式。
三、中断服务函数的实现中断服务函数的实现主要包括对中断事件的处理和相应操作。
中断服务函数的实现需要了解特定硬件的中断机制和相关的寄存器操作。
2022年闽南科技学院计算机科学与技术专业《操作系统》科目期末试卷B(有答案)
2022年闽南科技学院计算机科学与技术专业《操作系统》科目期末试卷B(有答案)一、选择题1、通常对文件系统来说,文件名及属性可以集中在()中以使查询。
A.目录B.索引C.字典D.作业控制块2、若文件f1的硬链接为f2,两个进程分别打开fl和f2,获得对应的文件描述符为fd1和fd2,则下列叙述中,止确的是()I.fl和f2的读写指针位置保持相同II.fl和f2共享同个内存索引节点III.fdl 和fd2分别指向各自的用户打开文件表中的一项,A.仅IIB. 仅II、IIIC.仪I、IID. I、II和II3、若某单处理器多进程系统中有多个就绪进程,则下列关于处理器调度的叙述中,错误的是()。
A.在进程结束时能进行处理器调度B.创建新进程后能进行处理器调度C.在进程处于临界区时不能进行处理器调度D.在系统调用完成并返回用户态时能进行处理器调度4、进行P0和P1;的共享变量定义及其初值为:boolean flag[2];int turn=0;flag[0]=false;flag[1]=false;若进行P0和P1,访问临界资源的类C代码实现如下:void Po()//进程Po{while(TRUE){flag[0]=TRUE;turn=1;While(flag[1]&&(turn==l));临界区;flag[0]=FALSE;}}void P1()//进程P1{while(TRUE){flag[1]=TRUE;turn=0;While(flag[0]&&(turn==0));临界区;flag[1]=FALSE;}}并发执行进程P0和P1时产生的情况是()。
A.不能保证进程互斥进入临界区、会出现“饥饿”现象,B.不能保证进程互斥进入临界区、不会出现“饥饿”现象C.能保证进程互斥进入临界区、会出现“饥饿”现象D.能保证进程互斥进入临界区、不会出现“饥饿”现象5、一个正在访问临界资源的进程由于申请等待1/0操作而被中断时,它()。
中断处理和函数调用
中断处理和函数调用中断处理和函数调用是计算机编程中常见的两个概念,它们在程序执行过程中起着重要的作用。
本文将分别详细介绍中断处理和函数调用的概念、原理和应用。
一、中断处理中断处理是指在计算机执行程序的过程中,当发生某些特定事件时,会暂停当前程序的执行,转而执行中断处理程序。
中断处理可以分为硬件中断和软件中断两种类型。
硬件中断是由计算机硬件设备发出的信号,用于通知CPU某种事件的发生,如键盘输入、鼠标移动等。
当发生硬件中断时,CPU会立即停止当前正在执行的指令,保存当前执行环境的状态,然后转而执行与中断相关的中断处理程序。
中断处理程序执行完毕后,CPU 会回到中断发生的地方,继续执行原来的程序。
软件中断是由程序中的特定指令触发的中断。
在程序中通过软件中断指令,可以主动暂停当前程序的执行,并转而执行与中断相关的中断处理程序。
软件中断通常用于实现一些特定功能,如系统调用、异常处理等。
中断处理在操作系统、驱动程序等领域有着广泛的应用。
通过中断处理,计算机可以及时响应外部设备的请求,提高系统的实时性和可靠性。
二、函数调用函数调用是指在程序中通过函数名和参数列表来调用特定的函数。
函数是一段封装了特定功能的代码块,通过函数调用可以在程序中多次使用同一段代码,提高了代码的复用性和可维护性。
在函数调用过程中,首先需要将函数的参数传递给函数,然后执行函数体中的代码。
函数执行完毕后,会返回一个返回值,并将控制权交还给调用函数的位置。
函数调用可以嵌套,即在一个函数内部调用另一个函数。
函数调用可以分为有返回值和无返回值两种类型。
有返回值的函数可以将计算结果返回给调用者,无返回值的函数则仅执行一些操作而不返回结果。
函数调用是程序结构化的基础,通过合理的函数调用可以使程序结构清晰、模块化,便于理解和维护。
函数调用也是实现面向对象编程的重要手段,通过定义类和方法,可以将函数调用封装成对象的方法调用。
三、中断处理与函数调用的关系中断处理和函数调用在程序执行过程中有着密切的联系。
单片机C语言函数中断函数(中断服务程序)
单片机_C语言函数_中断函数(中断服务程序)在开始写中断函数之前,我们来一起回顾一下,单片机的中断系统。
中断的意思(学习过微机原理与接口技术的同学,没学过单片机,也应该知道),我们在这里就不讲了,首先来回忆下中断系统涉及到哪些问题。
(1)中断源:中断请求信号的来源。
(8051有3个内部中断源T0,T1,串行口,2个外部中断源INT0,INT1(这两个低电平有效,上面的那个横杠不知道怎么加上去))(2)中断响应与返回:CPU采集到中断请求信号,怎样转向特定的中断服务子程序,并在执行完之后返回被中断程序继续执行。
期间涉及到CPU响应中断的条件,现场保护,现场恢复。
(3)优先级控制:中断优先级的控制就形成了中断嵌套(8051允许有两级的中断嵌套,优先权顺序为INT0,T0,INT1,T1,串行口),同一个优先级的中断,还存在优先权的高低。
优先级是可以编程的,而优先权是固定的。
80C51的原则是①同优先级,先响应高优先权②低优先级能被高优先级中断③正在进行的中断不能被同一级的中断请求或低优先级的中断请求中断。
80C51的中断系统涉及到的中断控制有中断请求,中断允许,中断优先级控制(1)3个内部中断源T0,T1,串行口,2个外部中断源INT0,INT1(2)中断控制寄存器:定时和外中断控制寄存器TCON(包括T0、T1,INT0、INT1),串行控制寄存器SCON,中断允许寄存器IE,中断优先级寄存器IP具体的是什么,包括哪些标志位,在这里不讲了,所有书上面都会讲。
在这里我们讲下注意的事项(1)CPU响应中断后,TF0(T0中断标志位)和TF1由硬件自动清0。
(2)CPU响应中断后,在边沿触发方式下,IE0(外部中断INT0请求标志位)和IE1由硬件自动清零;在电平触发方式下,不能自动清楚IE0和IE1。
所以在中断返回前必须撤出INT0和INT1引脚的低电平,否则就会出现一次中断被CPU多次响应。
(3)串口中断中,CPU响应中断后,TI(串行口发送中断请求标志位)和RI(接收中断请求标志位)必须由软件清零。
简述中断响应过程
简述中断响应过程中断是指主程序的执行被某些事件打断后,CPU强制跳转到相应的处理程序去完成特定任务,处理完成后再返回主程序的执行位置继续执行。
中断可以提高计算机的可靠性和及时性。
在实际应用中,中断响应是函数库的重要组成部分之一,因此,深入了解中断响应过程对编写高质量代码和系统优化至关重要。
中断响应过程是一系列步骤,以下是中断响应过程的详细描述:1.发生中断事件。
中断事件可以是I/O完成,时钟中断,硬件故障等。
2. CPU接收中断请求。
当CPU接收到中断请求后,会立即响应请求并且将当前执行的指令压入栈中保存程序现场,为中断处理程序提供空间。
3.关中断。
在CPU处理中断之前,会先关闭中断请求。
这是为了防止其他中断事件的干扰。
关闭中断请求不会影响其他正在执行的程序。
4.跳转到中断处理程序。
当中断发生时,CPU会跳转到中断处理程序的入口地址,并开始执行中断处理程序。
此时,CPU不再执行主程序,而是转向中断服务程序。
5.保存现场。
中断处理程序会首先保存现场。
现场包括程序执行状态,数据和寄存器的内容等。
保存现场的好处是当中断处理程序执行完毕后,能保证主程序继续执行时的状态不变。
通过栈机制,中断程序可以在处理过程中保存现场,并在中断处理程序完成之后恢复现场。
6.处理中断。
中断处理程序会根据中断类型来执行相应的处理任务。
这些任务包括I/O操作,处理键盘输入,更新状态等。
中断程序执行的时间可能会很长,因此,在中断处理程序中不要阻塞或长时间占用CPU。
7.恢复现场。
当中断处理程序执行完毕后,必须将保存的现场恢复为先前的状态。
恢复过程包括恢复程序执行状态,数据和寄存器的内容。
在恢复现场之后,中断处理程序将控制权转移到主程序。
8.开中断。
中断处理程序执行完毕后,会打开中断请求,并将控制权转移到主程序。
打开中断请求可以保证其他中断事件得以及时响应。
总结中断响应机制使得计算机可以在外部设备或事件驱动下进行自主处理。
通过理解中断请求的工作方式和执行过程,我们可以编写更高效的代码来处理各种中断事件。
2022年吉首大学计算机科学与技术专业《操作系统》科目期末试卷A(有答案)
2022年吉首大学计算机科学与技术专业《操作系统》科目期末试卷A(有答案)一、选择题1、在一个文件被用户进程首次打开的过程中,操作系统需做的是()A.将文件内容读到内存中B.将文件控制块读到内存中C.修改文件控制块中的读写权限D.将文件的数据缓冲区首指针返回给用户进程2、如果当前读写磁头正在53号柱面上执行操作,依次有4个等待访问的请求,柱面号,依次为98,37,124,65,当采用()算法时,下一次磁头才可能到达37号柱面。
A.先来先服务B.最短寻道时间优先C.电梯调度(初始磁头移动方向向着小磁道方向)D.循环扫描(磁头移动方向向着大磁道方向)3、结构(Cobegin语句1:语句2 Coend)表示语句1和语句2并发执行。
代码如下:X:=0;Y:=0;CobeginBeginX:=1;Y:=Y+X;EndBeginY:=2;X:=X+3;EndCoend当这个程序执行完时,变量X和Y的值有可能为()。
I.X=1,Y=2 II.X=1,Y=3 III.X=4,Y=6A.IB. I和IIC.II和IIID. I、II和III4、对进程的管理和控制使用()。
A.指令B.原语C.信号量D.信箱通信5、一个正在访问临界资源的进程由于申请等待1/0操作而被中断时,它()。
A.允许其他进程进入与该进程相关的临界区B.不允许其他进程进入临界区C.允许其他进程抢占处理器,但不能进入该进程的临界区D.不允许任何进程抢占处理器6、在可变分区分配管理中,某一作业完成后,系统收回其内存空间,并与相邻区合并,为此修改空闲区说明表,造成空闲分区数减1的情况是()。
A.无上邻空闲分区,也无下邻空闲分区B.有上邻空闲分区,但无下邻空闲分区C.无上邻空闲分区,但有下邻空闲分区D.有上邻空闲分区,也有下邻空闲分区7、使用修改位的目的是()。
A.实现LRU页面置换算法B.实现NRU页面置换算法C.在快表中检查页面是否进入D.检查页面是否最近被写过8、假设4个作业到达系统的时刻和运行时间见表。
关于中断服务函数里面是否可以调用其他函数的问题
的值已经改变,从而导致程序运行不正确,反过来亦然。
另一方面,func()与TaskB有直接的调用关系,因而其局部变量b与c不会被互相覆盖,但也不能保证func的局部变量c不会与TaskA或其他任务的局部变量形成可覆盖关系。
根据上述分析我们很容易就能够判断出TaskA和TaskB这两个函数是不可重入的(当然,func也不可重入)。
那么如何让函数成为可重入函数呢?C51编译器采用了一个扩展关键字reentrant作为定义函数时的选项,需要将一个函数定义为可重入函数时,只要在函数后面加上关键字reentrant即可。
厦门城论坛z' V- \0 L/ Z2 A. G) j与非可重入函数的参数传递和局部变量的存储分配方法不同,C51编译器为可重入函数生成一个模拟栈(相对于系统堆栈或是硬件堆栈来说),通过这个模拟栈来完成参数传递和存放局部变量。
模拟栈以全局变量?C_IBP、?C_PBP和?C_XBP作为栈指针(系统堆栈栈顶指针为SP),这些变量定义在DATA地址空间,并且可在文件startup.a51中进行初始化。
根据编译时采用的存储器模式,模拟栈区可位于内部(IDATA)或外部(PDATA或XDATA)存储器中。
如表1所示:表1s. h; j5 s) j- _4 @厦门电子城厦门城电子零件单片机电子,xmecity,电子制作,DIY,电脑元件,9 A/ c6 `2 `6 M4 |注意:51系列单片机的系统堆栈(也叫硬件堆栈或常规栈)总是位于内部数据存储器中(SP为 8位寄存器,只能指向内部),而且是“向上生长”型的(从低地址向高地址),而模拟栈是“向下生长”型的。
, g! c) @% u( z) M/ r: x7 w1、可重入函数参数传递过程剖析 T0 T$ T3 J. R# e在进入剖析之前,先简单讲讲c51函数调用时参数是如何传递的。
简单来说,参数主要是通过寄存器R1~R7来传递的,如果在调用时,参数无寄存器可用或是采用了编译控制指令“NOREGPARMS”,则参数的传递将发生在固定的存储器区域,该存储器区域称为参数传递段,其地址空间取决于编译时所选择的存储器模式。
2022年山西工学院计算机科学与技术专业《操作系统》科目期末试卷B(有答案)
2022年山西工学院计算机科学与技术专业《操作系统》科目期末试卷B(有答案)一、选择题1、文件系统中设立打开(open)系统调用的卡要目的是()。
A.把文件从辅存读到内存B.把文件的控制信息从辅存读到内存C.把文件的FAT表信息从辅存读到内存D.把磁盘文件系统的控制管理信息从辅存读到内存2、用户在删除某文件的过程中,操作系统不可能执行的操作是A.删除此文件所在的目录B.删除与此文件关联的目录项C.删除与此文件对应的文件控制块D.释放与此文件关联的内存缓冲区3、某系统中有11台打印机,N个进程共享打印机资源,每个进程要求3台打印机。
当N的取值不超过()时,系统不会发生死锁。
A.4B.5C.6D.74、下列关于银行家算法的叙述中,正确的是()A.银行家算法可以预防死锁B.当系统处于安全状态时,系统中…定无死锁进程C.当系统处于不安全状态时,系统中一定会出现死锁进程D.银行家算法破坏了产生死锁的必要条件中的“请求和保持”条件5、下列选项中,导致创建新进程的操作是()。
I.用户登录成功 II.设备分配 III.启动程序执行A.仅I和IIB.仅II和IIIC. 仅I和IIID. I,II,III6、()存储管理方式提供一维地址结构。
A.分段B.分页C.分段和段页式D.以上都不对7、产生内存抖动的主要原因是()A.内存空间太小B.CPU运行速度太慢C.CPU调度算法不合理D.页面置换算法不合理8、()不是操作系统的功能。
A.CPU管理B.存储管理C.网络管理D.数据管理9、假定下列指令已装入指令寄存器,则执行时不可能导致CPU从用户态变为内核态(系统态)的是()。
A.DIV R0,R1;(R0)/(R1)→ROB.INT n;产生软中断C.NOT RO;寄存器R0的内容取非D.MOV RO,addr;把地址 addr处的内存数据放入寄存器RO中10、某进程的段表内容见表,当访问段号为2、段内地址为400的逻辑地址时,进行地址转换的结果是()。
中断处理和函数调用
中断处理和函数调用中断处理和函数调用是计算机系统中两个重要的概念,它们在程序设计和系统运行中起着不可或缺的作用。
本文将从中断处理和函数调用两个方面,详细介绍它们的概念、原理和应用。
一、中断处理中断是指计算机在执行程序的过程中,由于外部事件(如硬件设备的输入、定时器的触发等)而打断正常的程序流程,转而处理其他任务的一种机制。
中断处理的目的是为了提高系统的响应能力和并发性。
中断处理过程主要包括中断请求、中断响应和中断处理程序三个阶段。
当外部事件发生时,硬件会发出中断请求信号,CPU会立即响应并转移到中断处理程序进行处理。
中断处理程序是一段特殊的代码,用于处理特定的中断事件,并保存和恢复现场。
中断处理的优点是可以提高系统的实时性和响应能力。
通过中断处理,系统可以在处理外部事件的同时,继续执行其他任务,从而实现并发处理。
但中断处理也有一定的开销,因为中断会引起上下文的切换和状态的保存,而且中断处理程序需要占用一定的系统资源。
二、函数调用函数调用是程序设计中常用的一种模块化编程方式。
函数是一段完成特定任务的代码块,通过函数调用可以在程序中重复使用这段代码,提高代码的可读性和重用性。
函数调用的过程主要包括函数调用、参数传递、函数执行和返回值等几个步骤。
当程序执行到函数调用语句时,会跳转到函数的入口地址,并将参数传递给函数。
函数执行完成后,会返回到函数调用的位置,并将返回值传递给调用者。
函数调用的优点是可以将复杂的程序分解成多个小模块,提高代码的可维护性和可测试性。
通过函数调用,可以将不同的功能封装到不同的函数中,便于代码的复用和维护。
但函数调用也会引入一定的开销,因为函数调用需要保存和恢复现场,而且函数调用过程需要消耗一定的时间和空间。
三、中断处理和函数调用的联系和区别中断处理和函数调用在计算机系统中起着不同的作用,但它们也有一些联系和区别。
中断处理和函数调用都是程序执行流程的转移。
中断处理是由外部事件触发,用于打断正常的程序流程,转而处理其他任务。
中断与回调函数的关系
中断与回调函数的关系1. 引言中断是计算机系统中的一种重要机制,用于处理与系统正常执行流程不一致的事件。
回调函数是一种常见的编程技术,用于处理异步事件。
本文将深入研究中断与回调函数之间的关系,并探讨它们在计算机系统中的应用。
2. 中断的概念和原理2.1 中断概念中断是指计算机系统在执行某个任务时,由于发生了某个特定事件而暂时停止当前任务,转而处理这个特定事件。
这些特定事件可以是硬件设备发出的信号,也可以是软件发出的信号。
2.2 中断原理当一个特定事件发生时,硬件会向处理器发送一个中断信号。
处理器会暂停当前任务,并保存当前任务执行状态和上下文信息。
然后转向执行一个预定义好的中断服务程序(Interrupt Service Routine, ISR),该程序负责处理这个特定事件。
当ISR执行完毕后,处理器会恢复之前保存好的上下文信息,并继续执行之前被打断的任务。
3. 回调函数概念和原理3.1 回调函数概念回调函数指被传递给其他函数作为参数,并在该函数内部被调用以完成某个特定任务的函数。
回调函数的作用是将任务的执行权交给调用方,以便异步执行。
3.2 回调函数原理回调函数的原理是通过将一个函数作为参数传递给其他函数,当特定事件发生时,其他函数会调用该回调函数来处理事件。
这种机制使得程序能够异步执行一些任务,而不需要等待特定事件的发生。
4. 中断与回调函数的关系4.1 中断与回调函数之间的联系中断和回调函数都是处理异步事件的重要机制。
中断通过硬件信号触发,而回调函数通过被传递给其他函数来触发。
它们都能够使程序在处理异步事件时能够及时响应,并在处理完成后继续执行之前被打断的任务。
4.2 中断与回调函数之间的区别中断和回调函数在触发机制上有一些区别。
中断是由硬件设备触发,并由处理器响应和处理;而回调函数是由程序员显式地将一个特定任务交给其他代码来完成。
此外,中断通常会导致当前任务被打断并保存上下文信息;而在使用回调函数时,当前任务可以继续执行,并不会被打断。
中断中调用函数与函数可重入问题
中断中调用函数与函数可重入问题一、中断函数是一个特殊的函数,没有参数,也没有返回值;但是程序中允不允许使用return呢?答案是允许的,不过只能用"return;",不能用"return(z);";用在一些需要快速返回的地方,对应的汇编会有多个ret语句,相对效率会高一些。
1 g& j; ^; r! @' ` 二、using的用法,using可以修饰任何函数,不过个人建议只用来修饰中断函数;简单的说,“using”会指定工作寄存器组,由于中断函数一般都是比较紧急的事情,有时一条语句都会斤斤计较,所以使用using切换寄存器组可以省去一些压栈7 g/ O F. @% A! k7 _9 的动作,由于51只有两级中断,同级中断不能被打断,因此,我们可以同级中断设成同样的寄存器组,从某种意义上来说,有一组寄存器是多余的。
同时个人建议中断函数应该使用using这个关键字。
9 V8 [! t0 y( l三、中断中调用函数,首先要讨论中断函数中调用函数的必要性,前天在论坛上我和别人争论过这个问题,现在我还是这个观点:有些情况中断中调用函数还是必要的,这个时候是不是该调用函数,其实和普通函数差不多,首先是这个函数如r5 X8 C; ^7 s2 g+ ]: }1 u$ `( {厦门E城论坛果调用多次,或者要带一些参数什么的就更加必要的;前天有人跟我叫劲,说假如只调用一次且无参数无返回的函数要直接写,因为如果用函数,至少会增加CALL和RET两条语句,我不敢苟同,我是实际调试发现的,当你程序比较复杂时,你将那部单独拉出来做成函数,可能代码和时间都会更好。
4 C4 h( A/ M8 [. u& Z& x. A. M6 四、中断中调用的函数最好不要被中断外的其它函数调用,因为会出现“重复调用”的警告,有时这种调用是很致命的,有人说这个函数可以用reentrant来修饰,是的,的确可以这样解决,不过个人不建议这么做,也许这样会跟你减少很多堆栈空间,并且整个程序的优化要差很多,个人建议出现这种情况就把这个函数写两遍,分成两个函数分别调用。
计算机操作系统名词解释
第一章引论1操作系统:操作系统是管理和控制计算机系统内各种硬件和软件资源,有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。
2管态:当执行操作系统程序时,处理机所处的状态3目态:当执行普通用户程序时,处理机所处的状态。
4多道程序设计:在这种设计技术下,内存中能同时存放多道程序,在管理程序的控制下交替的执行。
这些作业共享CPU和系统中的其他资源。
5并发:是指两个或多个活动在同一给定的时间间隔中进行。
它是宏观上的概念。
6并行:是指两个或多个活动在同一时刻同时执行的情况。
7吞吐量:在一段给定的时间内,计算机所能完成的总工作量。
8分时:就是对时间的共享。
在分时系统中,分时主要是指若干并发程序对CPU时间的共享。
9实时:表示“及时”或“既时”。
10系统调用:是用户在程序中能以“函数调用”形式调用的、由操作系统提供的子功能的集合。
每一个子功能称作一条系统调用命令。
它是操作系统对外的接口,是用户级程序取得操作系统服务的唯一途径。
11特权指令:指指令系统中这样一些指令,如启动设备指令、设置时钟指令、中断屏蔽指令和清内存指令,这些指令只能由操作系统使用。
12命令解释程序:其主要功能是接收用户输入的命令,然后予以解释并且执行。
13脱机I/O:是指输入/输出工作不受主机直接控制,而由卫星机专门负责完成I/O,主机专门完成快速计算任务,从而二者可以并行操作。
14联机I/O:是指作业的输入、调入内存及结果输出都在CPU直接控制下进行。
15资源共享:是指计算机系统中的资源被多个进程所功用。
例如,多个进程同时占用内存,从而对内存共享;它们并发执行时对CPU进行共享;各个进程在执行过程中提出对文件的读写请求,从而对磁盘进行共享等等。
第二章进程和线程1顺序性:是指顺序程序所规定的每个动作都在上个动作结束后才开始的特性。
2封闭性:是指只有程序本身的动作才能改变程序的运行环境。
3可再现性:是指程序的执行结果与程序运行的速度无关。
单片机原理与应用系统设计教材习题解答 马秀丽
答:
MOV R0,#20H ;R0=20H
MOV A,@R0
;A=40H
MOV R1,A
;R1=40H
MOV A,@R1
;A=10H
MOV @R0,P1 ;(20H)=0CAH
MOV P2,P1
;P2=0CAH
MOV 10H,A
;(10H)=10H
MOV 20H,10H ;(20H)=10H
7.已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片内 RAM(7FH)=70H,
4.写出完成下列操作的指令。 (1)R1 的内容送到 R2 中。 (2)片内 RAM 的 30H 单元内容送到片内 RAM 的 40H 单元中。 (3)片内 RAM 的 40H 单元内容送到片外 RAM 的 50H 单元中。 (4)片内 RAM 的 50H 单元内容送到片外 RAM 的 3000H 单元中。 (5)片外 RAM 的 1000H 单元内容送到片内 RAM 的 30H 单元中。 (6)片外 RAM 的 1000H 单元内容送到片外 RAM 的 2000H 单元中。 (7)ROM 的 1000H 单元内容送到片内 RAM 的 30H 单元中。 (8)ROM 的 1000H 单元内容送到片外 RAM 的 200H 单元中。 答:(1)MOV A,R1
MOV R2,A (2) MOV R0,#30H
MOV 40H,@R0
单片机原理与应用系统设计习题答案
5
或, 或, (3) (4) (5) (6)
(7)
(8)
MOV MOV MOV MOV MOV MOV MOVX MOV MOV MOVX MOV MOVX MOV MOV MOVX MOV MOVX MOV MOV MOVC MOV MOV MOV MOVC MOV MOVX
中断函数的特点
中断函数的特点中断函数(interrupt function)是一种在计算机系统中用于处理中断事件的特殊类型的函数。
中断事件通常是由于硬件设备(如外部设备、操作系统或其他软件)发出的信号触发,需要计算机系统中断正常执行的程序流程,执行一段特定的代码来处理该事件,然后再返回中断事件发生之前的上下文继续执行。
中断函数具有以下几个特点:1.响应速度快:中断函数的一个重要特点是能够迅速响应中断事件并进行处理。
由于中断事件发生的时间通常是不可预测的,并且往往需要及时处理,中断函数能够快速地对中断请求进行响应并立即处理。
2.优先级高:中断函数具有高优先级,可以打断正在执行的正常程序流程。
一旦发生中断事件,中断函数会立即被执行,只有在中断函数执行结束之后,才会恢复到之前正在执行的程序。
3.可重入性:中断函数必须是可重入的。
可重入性是指一个函数在被中断的同时可以被其他中断请求再次触发执行,而不会导致冲突或数据损坏。
中断函数通常会使用局部变量或寄存器保存中断处理过程中的临时数据,以免与其他中断或主程序之间的数据发生冲突。
4.状态保存和恢复:中断函数需要负责保存和恢复之前的执行状态。
当中断事件发生时,中断函数会保存当前正在执行的指令、寄存器值、堆栈指针等状态信息,并在处理完中断事件之后,将这些状态恢复到中断事件发生之前的状态,以确保之前的程序流程能够继续执行。
5.独占资源访问:中断函数可能需要访问某些共享的资源,如共享内存、操作系统数据结构等。
为了避免与其他进程或线程同时访问这些资源导致冲突,中断函数通常会使用临界区(critical section)或互斥锁(mutex)等机制来保护共享资源,以确保资源的安全性和一致性。
6.可屏蔽和不可屏蔽中断:中断函数根据中断事件的类型可以分为可屏蔽中断和不可屏蔽中断。
可屏蔽中断是指可以被屏蔽或暂时停用的中断,而不可屏蔽中断是指必须立即处理的中断。
可屏蔽中断通常可以设置优先级和屏蔽标志,以决定是否响应中断请求。
51单片机中断函数
51单片机中断函数在51单片机中,中断函数是一种特殊的函数,它用于响应硬件中断信号。
当某个特定的硬件事件发生时,例如按下按键、定时器溢出等,会触发相应的中断。
中断函数被设计用于在中断发生时执行特定的操作,以便及时响应和处理。
1. 中断的基本概念中断是指计算机运行过程中突然打断正常程序执行的事件。
当一个中断事件发生时,CPU会立即停下当前正在执行的指令,转而去执行与中断相关的处理程序,也就是中断函数。
完成中断处理后,CPU会返回到被中断的指令继续执行。
2. 中断函数的编写编写中断函数需要遵循一定的规则,以确保正确的执行和处理中断事件。
下面是一些编写中断函数的基本要点:•中断函数的定义,需要使用特殊的语法来声明,例如:void interrupt 中断函数名(void)•中断函数不能有参数,因为中断发生时无法传递参数•中断函数内部的代码应尽量简短,避免耗时过长,以免影响正常程序的执行•在中断函数中,可以使用一些特殊的关键字和函数来操作中断相关的寄存器和标志位,例如EA(总中断使能)和EX0(外部中断0使能)3. 中断的优先级和嵌套在51单片机中,中断可以有不同的优先级。
具有较高优先级的中断可以打断正在执行的较低优先级中断。
这种中断嵌套的机制可以确保重要的中断事件能够及时得到响应。
在编写中断函数时,需要注意不同中断的优先级设置。
一般情况下,较高优先级的中断应该尽量快速地完成处理,以便让其他中断有机会执行。
4. 中断的开关与屏蔽为了灵活控制中断的响应和屏蔽,51单片机提供了相关的寄存器和函数。
通过设置中断控制寄存器,可以开关特定中断的使能。
通过设置标志位,可以屏蔽或允许中断的触发。
在编写中断函数时,需要注意合理地使用中断开关和屏蔽功能,以避免不必要的中断触发和冲突。
5. 中断函数的调用与返回中断函数的调用是由硬件自动完成的,无需程序员主动调用。
当中断事件发生时,CPU会自动跳转到相应中断函数的入口地址执行。
自考02326操作系统考点笔记
第一章OS概论Point:1.OS的基本概念和OS的地位。
2.OS的主要特征和基本功能。
3.OS的体系结构。
4.OS的发展和分类。
5.常用OS结构设计和方法。
第一节OS的概念一、计算机系统a)定义:计算机系统是一种可以按用户的要求接受和存储信息、自动进行数据处理并输出结果信息的系统。
b)分类:广义:机械式系统和电子式系统。
电子式系统:模拟式和数字式计算机系统。
c)组成:硬件(子)系统和软件(子)系统。
计算机系统的资源:硬件资源、软件资源。
在计算机系统中,集中了资源管理功能和控制程序执行功能的一种软件,称为OS。
二、OS的定义a)定义:OS是计算机系统中的一个系统软件,它是这样一些程序模块的集合:它们能有效地组织和管理计算机系统中的硬件及软件资源,合理地组织计算机工作流程,控制程序的执行,并向用户提供各种服务功能,使得用户能够灵活、方便、有效地使用计算机,并使整个计算机系统能高效地运行。
b)解析:1)组织和管理计算机系统中的硬件和软件资源。
在OS中,设计了各种表格或数据结构,将所有的软硬件资源都加以登记。
(比如:PCB、系统设备表等)2)“有效”指OS在管理计算机资源时要考虑到系统运行的效率和资源的利用率。
要尽可能提高PU的利用率,让他尽可能少的空转,应该在保持访问效能的前提下尽可能有效利用其他资源。
(比如减少内存、硬盘空间的浪费等)3)“合理”指OS要“公平”对待不同的用户程序,保证系统不发生“死锁”和“饥饿”的现象。
4)“方便”指OS的人机界面要考虑到UI和程序接口两个方面的易用性、易学性和易维护性。
(用户使用接口:命令、GUI,如windows GUI。
程序接口:向程序员提供高效的编程接口,如API、系统调用。
)三、OS的特征1.并发性:是指计算机系统中同时存在若干个运行着的程序,从宏观上看,这些程序在同时向前推进。
2.共享性:OS需与多个用户程序共用系统中的各种资源。
比如PU、内存、外存、外部设备等。
2022年东北大学软件工程专业《操作系统》科目期末试卷B(有答案)
2022年东北大学软件工程专业《操作系统》科目期末试卷B(有答案)一、选择题1、 I/O中断是CPU与通道协调I作的种于段,所以在()时,便要产生中断。
A.CPU执行“启动I/O”指令而被通道拒绝接收B.通道接受了CPU的启动请求C.通道完成了通道程序的执行D.通道在执行通道程序的过程中2、 CPU输出数据的速度远远高于打印机的速度,为解决这一矛盾,可采用()。
A.并行技术B.通道技术C.缓冲技术D.虚存技术3、对重定位存储管理方式,应()。
A.在整个系统中设置一个重定位寄存器B.为每个程序设置个重定位寄存器C.为每个程序设置两个重定位寄存器D.为每个程序和数据都设置一个重定位寄存器4、某系统采用改进型CLOCK置换算法,页表项中字段A为访问位,M为修改位。
A=0表示页最近没有被访问,A=1表示页最近被访问过。
M=0表示页没有被修改过,M=1表示页被修改过。
按(A,M)所有可能的取值,将页分为4类:(0,0)、(1,0)、(0,1)和(1,1),则该算法淘汰页的次序为()。
A.(0,0),(0,1),(1,0),(1,1)B.(0,0),(1,0),(0,1),(1,1)C.(0,0),(0,1),(1,1),(1,0)D.(0,0),(1,1),(0,1),(1,0)5、在一个操作系统中对内存采用页式存储管理方法,则所划分的页面大小()。
A.要依据内存大小而定B.必须相同C.要依据CPU的地址结构而定D.要依据内存和外存而定6、假设4个作业到达系统的时刻和运行时间见表。
系统在t=2时开始作业调度。
若分别采用先来先服务和短作业优先调度算法,则选中的作业分别是()。
A.J2、J3B.J1、J4C.J2、J4D.J1、J37、用户程序在口态下使用特权指令引起的中断属于()。
A.硬件故障中断B.程序中断C.外部中断D.访管中断8、磁盘高速缓存设在()中。
A.内存B.磁盘控制器C.CacheD.磁盘9、现代操作系统中,文件系统都有效地解决了重名(即允许不同用户的文件可以具有相同的文件名)问题。
中断响应
5.2.2 中断允许寄存器
寄存器名称
D7 D6 D5 D4 D3 D2 D1 D0
定时器控制 TCON(88H) TF1
TF0
IE1 IT1 IE0 IT0
寄存器
位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H
串行口控制 SCON(98H)
TI RI
寄存器
位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
1)中断响应
中断响应是CPU对中断源中断请求的响应,包括保护断 点和将程序转向中断服务程序的入口地址(通常称矢量地 址)。CPU并非任何时刻都响应中断请求,而是在中断响应 条件满足之后才会响应。
(1)中断响应条件 CPU响应中断的条件有: a.有中断源发出中断请求。 b.中断总允许位EA = 1。 c.申请中断的中断源允许。 满足以上基本条件,CPU一般会响应中断,但若有下列 任何一种情况存在,则中断响应会受到阻断。
a.CPU正在响应同级或高优先级的中断。 b.当前指令未执行完。 c.正在执行RETI中断返回指令或访问专用寄存器IE和 IP的指令。
若存在上述任何一种情况,中断查询结果即被取消,CPU 不响应中断请求而在下一机器周期继续查询,否则,CPU在下 一机器周期响应中断。
CPU在每个机器周期的S5P2期间查询每个中断源,并设置 相应的标志位,在下一机器周期S6期间按优先级顺序查询每个 中断标志,如查询到某个中断标志为1,将在再下一个机器周 期S1期间按优先级进行中断处理。
(3)在保护和恢复现场时,为了不使现场数据遭到破 坏或造成混乱,一般规定此时CPU不再响应新的中断请求。 因此,在编写中断服务程序时,要注意在保护现场前关中 断,在保护现场后若允许高优先级中断,则应开中断。同 样,在恢复现场前也应先关中断,恢复之后再开中断。
中断响应和函数调用的区别
在《微机原理》和《计算机组成》等课程[1-4]教学中(本文以MCS-51单片机为例),中断过程既是教学难点又是教学重点,它与主程序调用子程序过程有一定相似性,但又有很大区别,调用子程序过程相对比较容易掌握,通过把两过程结合起来,采用比较教学方法,能收到了很好的教学效果。
1、两过程定义与作用子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。
子程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。
子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。
一般微机首先执行主程序,碰到调用指令就转去执行子程序,子程序执行完后,返回指令就返回主程序断点(即调用指令的下一条指令),继续执行没有处理完的主程序,这一过程叫做(主程序)调用子程序过程。
子程序结构可简化程序,防止重复书写错误,并可节省内存空间。
计算机中经常把常用的各种通用的程序段编成子程序,提供给用户使用。
用户在自己编写的程序中,只要会调用这些子程序,就可大大简化用户编程的困难。
中断是计算机中央处理单元CPU与外设I/O交换数据的一种方式,除此方式外,还有无条件、条件(查询)、存贮器直接存取DMA和I/O通道等四种方式。
由于无条件不可靠,条件效率低,DMA和I/O通道两方式硬件复杂,而中断方式C PU 效率高,因此一般大多采用中断方式。
中断概念是当计算机正在执行某一(主)程序时,收到一中断请求,如果中断响应条件成立,计算机就把正在执行的程序暂停一下,去响应处理这一请求,执行中断服务程序,处理完服务程序后,中断返回指令使计算机返回原来还没有执行完的程序断点处继续执行,这一过程称为中断过程。
进程调度方式通常有抢占和非抢占两种方式
进程调度方式通常有抢占和非抢占两种方式Last updated at 10:00 am on 25th December 2020操作系统:是管理和控制计算机中各种软硬件资源、合理地组织计算机工作流程的系统软件。
是计算机和用户之间的接口。
特征:并发、共享、虚拟、异步操作系统最根本的目的:提高系统资源利用率主要功能:存储管理、处理机管理、设备管理、信息管理(文件系统管理)、用户接口存储器管理的主要功能:内存分配、地址映射、存储保护、内存扩充用户接口分为命令接口、程序接口作业控制方式分为脱机控制和联机控制操作系统的类型和技术作业:是要求计算机系统按指定步骤对应用程序进行处理并得到计算结果的加工工作。
在一次应用业务处理过程中,从输入开始到输出结束,用户要求计算机所做的有关该次业务处理的全部工作。
(用户的观点)作业步:对应用程序进行处理的步骤。
作业由不同的顺序相连的作业步组成作业步是在一个作业的处理过程中,计算机所做的相对独立的工作作业由程序、数据和作业说明书三部分组成。
(系统的观点)联机:通过交互会话来输入输出作业。
由主机直接控制I/O ;作业处理与I/O不能并行(CPU利用率低)。
脱机(又称为预输入方式):通过后援存储器(磁带/磁盘)在外围处理机与主机之间交换作业。
提高了主机的利用率,但需人工干预,如移动存储介质和连接后援存储器等。
直接耦合:通过大容量的公用存储器在外围处理机与主机之间交换作业;既提高了主机的利用率,又无需人工干预。
成本较高,一般只适用于大型机/巨型机系统SPOOLING (Simultaneously Peripheral Operation On Line,外围设备同时联机操作 ):多台外围设备通过通道/DMA器件和主机与外存连接起来。
作业的I/O过程由主机中的操作系统控制。
网络联机:用户把在计算机网络中某一台主机上输入的信息传送到网中另一台主机上进行操作或执行。
进程:进程是指一个具有独立功能的程序对某个数据集在处理机上的执行过程和分配资源的基本单位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在《微机原理》和《计算机组成》等课程[1-4]教学中(本文以MCS-51单片机为例),中断过程既是教学难点又是教学重点,它与主程序调用子程序过程有一定相似性,但又有很大区别,调用子程序过程相对比较容易掌握,通过把两过程结合起来,采用比较教学方法,能收到了很好的教学效果。
1、两过程定义与作用子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。
子程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。
子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。
一般微机首先执行主程序,碰到调用指令就转去执行子程序,子程序执行完后,返回指令就返回主程序断点(即调用指令的下一条指令),继续执行没有处理完的主程序,这一过程叫做(主程序)调用子程序过程。
子程序结构可简化程序,防止重复书写错误,并可节省内存空间。
计算机中经常把常用的各种通用的程序段编成子程序,提供给用户使用。
用户在自己编写的程序中,只要会调用这些子程序,就可大大简化用户编程的困难。
中断是计算机中央处理单元CPU与外设I/O交换数据的一种方式,除此方式外,还有无条件、条件(查询)、存贮器直接存取DMA和I/O通道等四种方式。
由于无条件不可靠,条件效率低,DMA和I/O通道两方式硬件复杂,而中断方式CPU效率高,因此一般大多采用中断方式。
中断概念是当计算机正在执行某一(主)程序时,收到一中断请求,如果中断响应条件成立,计算机就把正在执行的程序暂停一下,去响应处理这一请求,执行中断服务程序,处理完服务程序后,中断返回指令使计算机返回原来还没有执行完的程序断点处继续执行,这一过程称为中断过程。
有了中断,计算机才能具有并行处理,实时处理和故障处理等重要功能。
2、两过程的联系与区别2.1联系中断与调用子程序两过程属于完全不同的概念,但它们也有不少相似之处。
两者都需要保护断点(即下一条指令地址)、跳至子程序或中断服务程序、保护现场、子程序或中断处理、恢复现场、恢复断点(即返回主程序)。
两者都可实现嵌套,即正在执行的子程序再调另一子程序或正在处理的中断程序又被另一新中断请求所中断,嵌套可为多级。
正是由于这些表面上的相似处,很容易使学生把两者混淆起来,特别是把中断也看为子程序,这就大错特错了。
2.2区别中断过程与调用子程序过程相似点是表面的,从本质上讲两者是完全不一样的。
两者的根本区别主要表现在服务时间与服务对象不一样上。
首先,调用子程序过程发生的时间是已知和固定的,即在主程序中的调用指令(CALL)执行时发生主程序调用子程序,调用指令所在位置是已知和固定的。
而中断过程发生的时间一般的随机的,CPU在执行某一主程序时收到中断源提出的中断申请时,就发生中断过程,而中断申请一般由硬件电路产生,申请提出时间是随机的(软中断发生时间是固定的),也可以说,调用子程序是程序设计者事先安排的,而执行中断服务程序是由系统工作环境随机决定的;其次,子程序完全为主程序服务的,两者属于主从关系,主程序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。
而中断服务程序与主程序两者一般是无关的,不存在谁为谁服务的问题,两者是平行关系;第三,主程序调用子程序过程完全属于软件处理过程,不需要专门的硬件电路,而中断处理系统是一个软、硬件结合系统,需要专门的硬件电路才能完全中断处理的过程;第四,子程序嵌套可实现若干级,嵌套的最多级数由计算机内存开辟的堆栈大小限制,而中断嵌套级数主要由中断优先级数来决定,一般优先级数不会很大。
3、MCS-51单片机两过程详细比较3.1调用子程序过程主程序调用子程序过程应包括保护断点、跳至子程序首址、保护现场、子程序处理、恢复现场、恢复断点(子程序返回)6步。
这六步都是用软件指令完成的。
其中前两步保护断点和跳至子程序首址由调用指令CALL完成。
保护断点其实就是把断点地址推入堆栈中保护起来,要注意的是保护的断点应是紧跟着调用指令的下一条指令地址,而不是调用指令本身地址,否则会引起重复调用“死循环”,这点必须提醒学生注意。
LCALL与ACALL是MCS-51单片机的两条调用指令,分别称为长调用和绝对调用,两指令主要区别在于LCALL后面操作数直接就是16位二进制的子程序入口地址;而ACALL后面操作数只是11位二进制数,子程序入口地址是把这11位数作为低位地址,再加上ACALL的下一条指令地址(即断点地址)的高5位作为高位地址,从而形成16位的子程序入口地址。
由此可知,两条调用指令的调用范围是不一样的,LCALL为64KB程序存贮器任何范围,而ACALL在高5位地址不变的同一页2KB范围内。
由于主程序与子程序可能会使用相同的寄存器和存贮单元存放数据,如果两者这些数据无关,那么子程序在使用这些相同寄存器和存贮单元之前,就必须先把主程序存放在这些区间里的数据现场保护起来,子程序在使用这些区间结束后,再把主程序现场恢复出来,以便子程序返回主程序后,主程序继续使用这些区间。
现场保护与恢复一般采用堆栈推入PUSH指令与堆栈弹出POP指令实现,当然也可采用改变工作寄存器R0~R7区间指针等方法实现。
子程序返回只需用RET指令就可把保护在堆栈中的断点恢复出来,继续执行主程序。
此外,主程序与子程序是密切联系的,它们之间存在着入口参数与出口参数传递问题,也就是主程序如何把输入参数传给子程序,子程序又如何把处理结果的输出参数带回给主程序,两者参数传递一般可采用寄存器或存贮单元、堆栈、数据指针等方法实现。
子程序再调用子程序叫做子程序嵌套,由于MCS-51单片机只能把内部RAM00~7FH 128字节单元作为堆栈使用,断点地址保护到堆栈中需占2字节单元,所以子程序最多可能嵌套64级,当然实际使用中子程序嵌套一般2~3级,否则程序结构就显得太复杂了。
3.2 中断过程中断过程远比调用子程序过程要复杂,它包括中断请求(或申请)、中断排队、中断响应、中断服务(或处理)和中断返回5大步。
这5大步是由硬件和软件结合完成的。
中断请求由中断源向CPU提出。
MCS-51单片机只有T/C0定时/计数器0溢出、T/C1定时/计数器1溢出、TXD/RXD串行口发送与接收一帧完、INT0外部中断0和INT1外部中断1等5个硬件中断源,其中前三个为内部中断源,后两个为外部中断源。
由于CPU在某一时刻只能响应一个中断请求,为处理执行主程序时同时来了多个中断请求和正在处理某一中断时又来了新的中断请求这两种情况,计算机采用硬件或软件给各个中断源按优先权大小进行中断排队,从多个中断申请中选出一个级别最高中断请求而响应之,这一过程称为中断排队。
MCS-51单片机用户可用指令设置高、低两个优先级,而且同级中还有5个固定的隐含优先级,从高到低的优先级顺序分别是INT0、T/C0、INT1、T/C1、TXD/RXD。
这样,在执行主程序时,同时来了两个以上中断请求,则先按高低两级选择高优先级,如只有一个高级就直接选之,如有两个以上都是同级,则按同级隐含优先级,选择其中一个高级别。
如正在执行一个低优先级,又来了一个高优先级(即正在执行的中断级别低于新来的中断级别),则高优先级中断低优先级,这就形成了两级中断嵌套。
如正在执行低的又来了另一低的或者正在执行高的又来了一个低的或高的(即正在执行的中断级别高于或等于新来的中断级别),则不予理睬,不会引起中断嵌套,也就是说同级隐含原则在不同时来了同级中断时无效。
可见,MCS-51单片机最多形成两级中断嵌套。
CPU在执行任何机器指令时,在每一个机器周期T CY都要抽点时间(MCS-51单片机为S5P2状态节拍)来采集查询有无中断请求,如没有,则继续执行原程序机器指令,如有中断请求,则先从中选出级别最高者,在中断响应条件成立时,去处理响应此中断请求。
MCS-51单片机的中断响应必要条件是中断屏蔽总开关EA和中断请求相应的屏蔽分开关都必须闭合,只有这样,中断请求信号才能送到CPU。
此外,还不能碰到以下3种情况,即有优先级更高的中断请求同时提出或者正在执行同级或高级中断,正在执行的指令还没有执行完、正在执行RETI或访问中断屏蔽寄存器IE和中断排队寄存器IP,这3种情况是中断响应的充分条件。
这1种情况中断排队轮不到它响应;第2种情况必须等到现行指令执行完,再响应中断,指令周期分为1、2、4T CY三种机器周期,计算机每个TCY出现仅查看一次中断请求,因此,2T CY和4T CY机器指令有可能没有执行完。
如果执行指令没执行完就去响应中断,则中断处理返回后,计算机很难把分断开执行的同一条指令连贯起来;第3种情况处理与第2种情况类似,但它除了要把现行的RETI指令或访问IE、IP指令执行完处,还需再执行下一条指令,方能响应中断。
利用这个原理,很容易实现单步STEP操作(调试程序时使用)。
中断服务和中断返回又由关(禁止)同级和低级中断、中断请求撤除、保护断点、跳至中断服务程序入口、保护现场、中断处理、恢复现场、开(允许)同级和低级中断、恢复断点(中断返回)等9小步组成。
这9步中断服务过程与前面介绍的6步调用子程序过程类似,只是增加了开、关同级和低级中断请求以及中断请求撤除3步,其余6步完全一致。
开、关同级和低级中断目的是使不同时来中断请求的同级隐含排队原则无效,此时只能实现高级嵌套低级的两级中断嵌套。
在中断处理的返回前清除原中断请求原因是防止同一次中断申请被重复响应。
中断服务过程的前4步是由硬件自动实现的,这点完全不同于调用子程序过程。
当然TXD/RXD中断请求与INT0、INT1电平触发中断请求还需用户分别用软件和硬件清除中断请求。
MCS-51单片机的中断服务程序入口地址是固定的,它们分别是INT0为0003H、T/C0为000BH、INT1为0013H、T/C1为001BH、TXD/RXD为0023H。
断点现场保护与恢复也是通过堆栈推入与弹出或改变工作寄存器区来实现的。
中断处理完后,就应返回断点继续执行主程序,开同级和低级中断、恢复断点2步可用中断返回指令RETI实现,注意子程序返回指令RET只能实现恢复断点,而不能开同级和低级中断。
4、结论中断过程与调用子程序过程是微机原理教学中重点和难点内容之一。
两过程之间既有联系,又有区别。
本文从多个不同角度详细地对比了它们的异同。
对于培养学生编制软件及开展计算机应用方面的能力,具有积极的指导意义,采用这种比较教学法,有利于教学质量的提高。