中断的应用中对断点的保护
- 格式:doc
- 大小:75.00 KB
- 文档页数:8
微机原理试题及答案(1)学年第学期微机原理及应⽤(A)课程试卷卷16班级姓名得分任课教师⼀、选择题:(每题分,共18分)1、DMAC向CPU发出请求信号,CPU响应并交出总线控制权后将(3)。
反复执⾏空操作,直到DMA操作结束进⼊暂停状态, 直到DMA操作结束进⼊保持状态, 直到DMA操作结束进⼊等待状态, 直到DMA操作结束2、有⼀个实时数据采集系统,要求10ms进⾏⼀次数据采集,然后进⾏数据处理及显⽰输出,应采⽤的数据传送⽅式为( 3 )。
⽆条件传送⽅式查询⽅式中断⽅式直接存储器存取⽅式3、在数据传送过程中,数据由串⾏变并⾏,或由并⾏变串⾏的转换可通过(3 )来实现。
计数器寄存器移位寄存器D触发器4、8088 CPU输⼊/输出指令可寻址外设端⼝的数量最⼤可达(4 )个。
128 256 16K 64K5、CPU响应中断后,通过(4)完成断点的保护。
执⾏开中断指令执⾏关中断指令执⾏PUSH指令内部⾃动操作6、并⾏接⼝芯⽚8255A具有双向数据传送功能的端⼝是(1 )。
PA⼝PB⼝PC⼝控制⼝7、8088CPU处理动作的最⼩时间单位是(2 )。
指令周期时钟周期机器周期总线周期8.堆栈是内存中(4 )。
先进先出的ROM区域后进先出的ROM区域先进先出的RAM区域后进先出的RAM区域9、计算机中⼴泛应⽤的RS-232C实质上是⼀种(3 )。
串⾏接⼝芯⽚串⾏通信规程(协议)串⾏通信接⼝标准系统总线标准5--110、⾼速缓冲存储器(CACHE)⼀般是由(1 )芯⽚组成。
SRAM DRAM ROM EPROM11、⿏标器是⼀种(3 )。
⼿持式的作图部件⼿持式的光学字符识别设备⼿持式的座标定位部件⼿持式扫描器12、传送速度单位“bps”的含义是(2 )。
bytes per second bits per secondbaud per second billion bytes per second⼆、填空题:(每空1分,共12分)1、CPU在响应中断后,⾃动关中。
操作系统的中断处理机制是一种负责响应和处理外部事件的能力,它使得操作系统能够实现并发、实时处理以及故障自动处理等功能。
中断处理机制主要包括以下几个部分:1. 中断请求:中断请求是外部事件向操作系统发出的请求,例如I/O操作完成、硬件故障、外部中断等。
这些请求会触发中断机制,使得操作系统暂停当前工作,转去处理中断请求。
2. 中断识别:操作系统需要识别来自不同中断源的中断请求,以便正确处理相应的事件。
识别中断源的方式包括查询中断向量表、中断号等。
3. 保护现场和断点:在响应中断之前,操作系统需要保存当前进程的执行状态,包括相关寄存器的值等。
这一过程称为现场保护。
处理完中断事件后,操作系统需要恢复原进程的执行状态,这一过程称为现场恢复。
4. 装入中断服务程序:操作系统根据中断类型和中断向量,将相应的中断服务程序的入口地址装入CPU的指令寄存器中,以便CPU能够执行中断服务程序。
5. 进入中断服务程序:CPU开始执行中断服务程序,用于处理中断请求。
在中断服务程序中,操作系统需要完成以下任务:保护被中断进程的现场信息、分析中断原因、处理发生的中断事件等。
6. 中断返回:中断服务程序处理完毕后,操作系统需要将CPU的状态恢复到原来的断点,并继续执行被中断的进程。
这一过程通过IRET(Interrupt Return)指令实现。
7. 交换指令执行地址:在中断处理过程中,操作系统需要交换CPU的执行地址,以便继续执行被中断的进程。
8. 交换CPU的态:操作系统需要将CPU的状态从中断态恢复到原来的工作态。
总之,操作系统的中断处理机制是一种负责处理外部事件的机制,它能够在保证系统稳定运行的同时,实现对各种中断事件的及时响应和处理。
这一机制依赖于硬件和软件的协同工作,使得操作系统能够实现高效的并发和实时处理能力。
第一章1.基于(存储程序)原理的冯工作方式的基本特点(按地址访问并顺序执行指令)。
2.计算机硬件指(计算机系统的实体部分,他由看得见摸得着的各种电子元器件及各类光电机设备的实物组成,包括主机外设等)软件指(人们事先编制的具有各类特殊功能的程序,是无形的),固件是指(具有某软件功能的硬件,一般由ROM实现)3.计算机唯一能直接执行的语言是(机器)语言。
4.计算机将存储、算术逻辑运算和控制三个部分合称为(主机),再加上(输入设备)和(输出设备)就组成了计算机硬件系统。
5.(指令)和(数据)都放在存储器中,(控制器)能自动识别他们。
6.指令的解释是由(控制器)来完成的,运算器用来完成(算术和逻辑运算)7.计算机硬件的主要技术指标:(机器字长),(存储容量),(运算速度)。
第二章1.移码常用来表示浮点数的(阶码)部分,移码和补码除符号位不相同外,其它各位相同。
2.在浮点表示时,若用全0表示机器零(尾数为0,阶码最小),则阶码应采用(移码)机器数形式。
在定点表示时,若要求数值0在计算机中唯一表示全零,则应采用(补码)机器数形式。
3.正数补码算术移位时,(符号)位不变,空位补(0)。
负数补码算术左移时,(符号)位不变,低位补(0)。
负数补码算术右移时,(符号)位不变,高位补(1)。
4.正数原码左移时,(符号)位不变,高位丢0,结果(正确),右移时低位丢(1),结果引起误差。
负数原码左移时,(符号)位不变,高位丢(1),结果出错,右移时低位丢(1),结果正确。
5.正数补码左移时,(符号)位不变,高位丢1,结果(出错),右移时低位丢(0),结果引起误差。
负数补码左移时,(符号)位不变,高位丢(1),结果正确,右移时低位丢(1),结果引起误差。
第三章1.(Cache)、(主存)和(辅存)组成三级存储系统,分级目的是(提高访存速度、扩大存储容量)。
2.半导体静态RAM依据(触发器原理)存储信息,半导体动态RAM依据(电容存储电荷原理)存储信息。
单片机模拟试卷001一、选择题(每题1分,共10分)1.8031单片机的( D )口的引脚,还具有外中断、串行通信等第二功能。
a)P0 b)P1 c)P2 d)P32.单片机应用程序一般存放在(B)a)RAM b)ROM c)寄存器 d)CPU3.已知某数的BCD码为0111 0101 0100 0010 则其表示的十进制数值为(B)a)7542H b) 7542c) 75.42H d)75。
424.下列指令中不影响标志位CY的指令有(D )。
a)ADD A,20H b)CLR c)RRC A d)INC A5.CPU主要的组成部部分为(A)a)运算器、控制器 b)加法器、寄存器c)运算器、寄存器 d)运算器、指令译码器6.INTEL 8051 CPU是(C )位的单片机a)16 b)4 c)8 d)准167.8031复位后,PC与SP的值为( B )a )0000H,00H b)0000H,07H c)0003H,07H d)0800H,00H8.当需要从MCS—51单片机程序存储器取数据时,采用的指令为(B)。
a)MOV A, @R1 b)MOVC A, @A + DPTRc)MOVX A,@ R0 d)MOVX A, @ DPTR9.8031单片机中既可位寻址又可字节寻址的单元是( A )a)20H b)30H c)00H d)70H10.下列哪条指令是正确的(D)a) PUSH R2 b) ADD R0,Ac)MOVX A @DPTR d) MOV @R0,A二、填空题(每空1分,共30分)1.一个完整的微机系统由硬件和软件两大部分组成.2.8051 的引脚RST是____(IN脚还是OUT脚),当其端出现高电平时,8051进入复位状态。
8051一直维持这个值,直到RST脚收到____电平,8051才脱离复位状态,进入程序运行状态,从ROM H单元开始取指令并翻译和执行。
3.半导体存储器分成两大类和,其中具有易失性,常用于存储.4.求十进制数—102的补码(以2位16进制数表示),该补码为。
1.在单级中断系统中,CPU一旦响应中断,则立即关闭中断允许。
标志,以防止本次中断服务结束前同级的其他中断源产生另一次中断进行干扰。
2.浮点运算指令对用于科学计算的计算机是很必要的,可以提高计算机的运算速度。
(√)3.处理大量输入输出数据的计算机,一定要设置十进制运算指令。
(×)4.在计算机的指令系统中,真正必须的指令不多,其余指令都是为了提高计算机速度和便于编程而引入的。
(√)5.不设置浮点运算指令的计算机,就不能用于科学计算。
(×)6.通用寄存器间接寻址方式中,操作数处在内存单元中。
(√)7.扩展操作码是操作码字段中用来进行指令分类的代码。
(×)8.随机半导体存储器(RAM)中的任何一个单元都可以随机访问。
(√)9.和静态存储器相比,动态存储器的工作速度较慢,但功耗较低、集成度较高,因而常用于主存储器。
(√)10.一般情况下,ROM和RAM在存储体是统一编址的。
(√)11.CPU访问存储器的时间是由存储体的容量决定的,存储容量越大,访问存储器所需的时间越长。
(×)12.Cache的功能全由硬件实现。
(√)13.因为动态存储器是破坏性读出,因此必须不断的刷新。
(×)14.固定存储器(ROM)中的任何一个单元不能随机访问。
(×)15.由于半导体存储器加电后才能存储数据,断电后数据就丢失,因此,用EPROM制成的存储器,加电后必须重写原来的内容。
(×)16.交叉存储器主要解决扩充容量问题。
(×)17.访问存储器的请求是由CPU发生的。
(×)18.Cache存储器的内容是由操作系统调入的。
(×)19.DMA设备的中断级别比其他I/O设备高,否则数据将可能丢失。
(√)20.Cache与主存统一编址,即主存空间的某一部分属于Cache。
(×)21.在DMA控制方式中,主机和外设是并行运行的。
(√)22.与各中断源的中断级别相比,CPU(或主程序)的级别最高。
第4章单片机中断系统习题解答一、填空题1.MCS-51单片机有 5 个中断源。
上电复位时,同级中断的自然优先级从高至低依次为外中断0、定时器/计数器0、外中断1、定时器/计数器1、串行口,若IP=00010100B,优先级别最高者为外中断1、最低者为定时器/计数器1。
2.外部中断请求有低电平触发和下降沿触发两种触发方式。
3.MCS-51单片机5个中断源的中断入口地址为:0003H、000BH、0013H、001BH、0023H。
4.当定时器/计数器1申请中断时,TF1为 1 ,当中断响应后,TF1为 0 。
当串口完成一帧字符接收时,RI为 1 ,当中断响应后,RI为 1 ,需要软件清零。
5.中断源扩展有三种方式,分别是定时器/计数器扩展、查询方式扩展、中断控制芯片扩展。
二简答题1.MCS-51单片机有几个中断源?各中断标志是如何产生的?如何撤销的?各中断源的中断矢量分别是什么?答:MCS-51单片机有5个中断源。
外中断0/1电平触发方式,在对应引脚上检测到低电平将中断标志位IE0/1置1向CPU申请中断,边沿触发方式,在对应引脚上检测到负跳变将中断标志位IE0/1置1向CPU申请中断;定时器/计数器0/1在计数溢出时将TF0/1置1向CPU申请中断;串行口发送1帧结束将TI置1或接收1帧数据将RI置1向CPU申请中断。
对于T0/T1和边沿触发的INT0/INT1中断标志在进入中断服务程序后自动撤销;对于电平触发的INT0/INT1需在中断申请引脚处加硬件撤销电路;对于串行口中断标志TI/RI需在进入中断服务程序后用软件CLR RI或CLR TI,撤销。
它们的中断矢量分别是:0003H、000BH、0013H、001BH、0023H。
2.简述MCS-51中断过程答:中断过程分中断申请、中断响应、中断处理、中断返回4个阶段。
中断请求:各中断源根据自身特点施加合适的信号,将对应的中断标志位置1向CPU申请中断。
单片机中断处理过程:中断响应中断处理中断返回详
解
中断处理过程可分为中断响应、中断处理和中断返回三个阶段。
中断响应
中断响应是CPU 对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地址)。
中断响应过程
中断响应过程包括保护断点和将程序转向中断服务程序的入口地址。
首先,中断系统通过硬件自动生成长调用指令(LACLL),该指令将自动把断点地址压入堆栈保护(不保护累加器A、状态寄存器PSW 和其它寄存器的内容),然后,将对应的中断入口地址装入程序计数器PC(由硬件自动执行),使程序转向该中断入口地址,执行中断服务程序。
MCS-51 系列单片机各中断源的入口地址由硬件事先设定,分配如下:
中断源入口地址
外部中断00003H
定时器T0 中断000BH
外部中断10013H
定时器T1 中断001BH
串行口中断0023H
使用时,通常在这些中断入口地址处存放一条绝对跳转指令,使程序跳转到用户安排的中断服务程序的起始地址上去。
中断返回
中断返回是指中断服务完后,计算机返回原来断开的位置(即断点),继续执。
中断系统中断装置和中断处理程序统称为中断系统。
中断系统是计算机的重要组成部分。
实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。
中断系统的应用大大提高了计算机效率。
不同的计算机其硬件结构和软件指令是不完全相同的,因此,中断系统也是不相同的。
计算机的中断系统能够加强CPU对多任务事件的处理能力。
中断机制是现代计算机系统中的基础设施之一,它在系统中起着通信网络作用,以协调系统对各种外部事件的响应和处理。
中断是实现多道程序设计的必要条件。
中断是CPU对系统发生的某个事件作出的一种反应。
引起中断的事件称为中断源。
中断源向CPU提出处理的请求称为中断请求。
发生中断时被打断程序的暂停点成为断点。
CPU暂停现行程序而转为响应中断请求的过程称为中断响应。
处理中断源的程序称为中断处理程序。
CPU执行有关的中断处理程序称为中断处理。
而返回断点的过程称为中断返回。
中断的实现实行软件和硬件综合完成,硬件部分叫做硬件装置,软件部分成为软件处理程序。
中断系统的功能1)实现中断响应和中断返回当CPU收到中断请求后,能根据具体情况决定是否响应中断,如果CPU没有更急、更重要的工作,则在执行完当前指令后响应这一中断请求。
CPU中断响应过程如下:首先,将断点处的PC值(即下一条应执行指令的地址)推入堆栈保留下来,这称为保护断点,由硬件自动执行。
然后,将有关的寄存器内容和标志位状态推入堆栈保留下来,这称为保护现场,由用户自己编程完成。
保护断点和现场后即可执行中断服务程序,执行完毕,CPU由中断服务程序返回主程序,中断返回过程如下:首先恢复原保留寄存器的内容和标志位的状态,这称为恢复现场,由用户编程完成。
然后,再加返回指令RETI,RETI指令的功能是恢复PC值,使CPU返回断点,这称为恢复断点。
恢复现场和断点后,CPU将继续执行原主程序,中断响应过程到此为止。
2)实现优先权排队通常,系统中有多个中断源,当有多个中断源同时发出中断请求时,要求计算机能确定哪个中断更紧迫,以便首先响应。
中断的基本原理和处理流程。
中断是计算机中的一个重要概念,它是指CPU在执行程序的过程中,由于内部或外部的原因,需要暂时停止当前正在执行的程序,转而去执行另一段程序,这段程序执行完后,再返回到原来暂停的程序继续执行。
中断的基本原理和处理流程如下:
一、中断的基本原理
中断是一种由硬件或软件引起的、能改变处理器执行顺序的一种机制。
当中断发生时,处理器会停止当前的执行流,跳转到另一个预定义的地址,即中断服务程序(Interrupt Service Routine, ISR)的入口地址,去执行中断服务程序。
中断服务程序执行完毕后,处理器会恢复原来的执行流,继续执行被中断的程序。
二、中断的处理流程
中断请求:中断源向CPU发出中断请求信号。
中断响应:CPU响应中断请求,保护现场,将断点地址及有关状态信息压入堆栈或存入特定的寄存器中,以便在中断服务程序执行完毕后能正确地返回到原来的程序。
中断处理:CPU跳转到中断服务程序入口地址,执行中断服务程序。
中断服务程序负责处理中断事件,完成后需要清除中断标志位,以便CPU能继续响应其他中断。
中断返回:中断服务程序执行完毕后,CPU恢复现场,从堆栈或特定的寄存器中弹出断点地址及有关状态信息,然后返回到
原来的程序继续执行。
需要注意的是,中断的优先级是一个重要的概念。
在多个中断同时发生时,处理器会根据中断的优先级来决定先处理哪个中断。
高优先级的中断可以打断低优先级的中断,但同级或低优先级的中断不能打断高优先级的中断。
【016】中断的应用中对断点的保护 [51]点击数:430 发布日期:2006-8-22 20:37:00【收藏】【评论】【打印】【编程爱好者论坛】【关闭】实验参考: 笨笨工作室-实验八、按键控制跑马灯(中断)。
(查看)实验板: FB51A。
(查看)实验目的: <1> 掌握堆栈在中断程序中的作用。
<2> 掌握让程序保护现场的方法。
实验现象: 二极管作左右跑马灯,当按下外部按键 K1 时, 8 个二极管全部闪烁 5 次后从 K1 按下之前的位置继续作跑马灯。
在应用中断时,若主程序在正常运行的过程中响应了中断就要转而去执行中断服务程序。
那如何在执行完中断服务程序之后完全恢复原来的主程序呢?这就需要在执行中断服务程序之前将相关的状态保护起来,在中断完成后再将这些状态恢复,从而继续执行主程序。
51单片机中允许我们从内部 RAM 中指定一个空间专门保存这些断点处的状态,这个空间就是堆栈。
并且还专门给了我们一个 8 位的堆栈指针,让我们用它来开辟堆栈空间。
例如我们给堆栈指针赋值: mov sp, #70h ,就表示我们把内部数据 RAM 的地址为 70H 开始的单元设为堆栈。
MCS-51的片内存储器(RAM)共有256字节,高128字节是特殊功能寄存器,地址范围80H~FFH。
这一部分可看作系统资源,不能随便利用。
而剩下的低12 8字节区分如下:──┬────────────┐7FHㄧ用户RAM区ㄧㄧ(数据缓冲区、堆栈区)ㄧ30Hㄧ 80 byte ㄧ──┼────────────┤2FHㄧ可位寻址区ㄧ20Hㄧ 16 byte ㄧ──┼────────────┤1FHㄧ第3组工作寄存器区ㄧ18Hㄧ 8 byte ㄧ──┼────────────┤17Hㄧ第2组工作寄存器区ㄧ10Hㄧ 8 byte ㄧ──┼────────────┤0FHㄧ第1组工作寄存器区ㄧ08Hㄧ 8 byte ㄧ──┼────────────┤07Hㄧ第0组工作寄存器区ㄧ00Hㄧ 8 byte ㄧ──┴────────────┘在这低128字节中,工作寄存器区和位寻址区的地址已分配好,我们可以利用的只有 30H ~ 7FH 的数据缓冲区。
所以我们的堆栈指针只能设在这个区域。
在主程序中,让程序作左右跑马灯(参考【004】流水灯实验),。
程序中通过把寄存器a中的数进行左环移来实现的。
而a又是最常用的一个寄存器,在中断服务程序中也多数会用到,所以在响应中断时要将其保存起来(压入堆栈)。
由于程序状态字寄存器PSW(位于特殊功能寄存器区)的不同位包含了程序运行状态的不同信息,所以进入中断时也要将PSW的值保护起来。
在返回主程序之前,再把它们取出来,这样就可以使得程序从进入中断之前的位置开始,继续作跑马灯。
键识别部分参考【015】中断方式按键一文。
所用电路如下:显示部分:键盘部分:程序如下:org 0000hljmp startorg 0013hljmp ext1org 0020hstart: setb ea ; CPU开中断setb ex1 ; 允许外部中断1申请中断setb it1 ; 设置外部中断1为跳变方式触发 mov sp, #70h ; 设置堆栈入口loop1: lcall led_flow ; 调用左右流水灯程序ljmp loop1ext1: ; 中断服务程序clr ea ; CPU关中断push acc ; a 入栈push psw ; psw 入栈lcall key ; 调用键识别子程序pass: pop psw ; 恢复现场(与入栈顺序相反)pop accsetb ea ; CPU开中断reti ; 中断返回led_flow: mov a, #0ffh ; 左右流水灯子程序clr c ; 清Cy进位标志位mov r7, #08h ; 左循环次数lloop: rlc a ; a循环左移mov p0, a ; a送P0口lcall del100ms ; 延时100msdjnz r7, lloop ; 左移8次mov r6, #06h ; 右循环次数rloop: rrc amov p0, alcall del100msdjnz r6, rloopretkey: mov a, p1 ; 键识别子程序anl a, #0fhcjne a, #0dh, passlcall del10msmov a, p1anl a, #0fhcjne a, #0dh, passlcall key_flash ; K1按下则调用灯闪程序retkey_flash: mov a, #00h ; 灯闪5次子程序mov r5, #10 ; 闪一次有一亮一灭loop2: mov p0, acall del100mscpl a ; 取反djnz r5, loop2retdel10ms: ; 10ms延时子程序(12M)mov r4, #20 ; 2机器周期temp1: mov r3, #248 ; 2机器周期djnz r3, $ ; 2机器周期 2+2×248=498djnz r4, temp1 ; 2机器周期2×20=40ret ; 2+20×498+40=10002 即10msdel100ms: mov r2, #0c3h ;100.036mstemp2: mov r1, #0ffh ;511usdjnz r1, $djnz r2, temp2retend★实验结果: 最终下载到FB51A实验板上得到预计结果。
但在用Porteus仿真时却出现问题,流水灯正常运行时按下K1键后,8只LED闪烁5次后所有LED全灭,并未继续运行。
在LED正常"流水"时按下K0、K2、或K3键时,则停在当前状态(一只LED亮)。
经过调试后仍未解决,由于这个板上的键盘设计的有些不同,每个键都通过一个4148连到P3.3,而在Proteus中仿真时用4148行不通,所以用4001代替的。
所以怀疑是这里的问题, 于是又试着用另一块板(AS系统)试了一下, 将外部中断1(P3.3)直接接一个开关后接地, 这样就可以直接触发中断了, 程序中去除了键识别的部分, 试验结果还是一样, 板上实测通过,仿真仍然会停在中断服务程序中。
后来又试着换了个中断源,原来用的外部中断1,现在改用外部中断0,程序中作相应的修改后再仿真就OK了。
又翻了翻书,外部中断1和外部中断0好像没什么不同,只是外部中断0的优先级要比外部中断1高。
而在板上实测二者均通过,只是在仿真的时候出现问题,难道是Porteus软件本身对这两个中断源的优先级有所区别? 还是软件本身有问题……还是感觉这块板上的键盘结构在这个实验中很别扭,所以还是改为直接用一个开关控制,电路如下:程序如下:org 0000hljmp startorg 0003hljmp ext1org 0030hstart: setb ea ; CPU开中断setb ex0 ; 允许外部中断1申请中断setb it0 ; 设置外部中断1为跳变方式触发 mov sp, #70h ; 设置堆栈入口loop1: lcall led_flow ; 调用左右流水灯程序ljmp loop1ext1: ; 中断服务程序clr ea ; CPU关中断push acc ; a 入栈push psw ; psw 入栈lcall key_flash ; K1按下则调用灯闪程序pass: pop psw ; 恢复现场(与入栈顺序相反) pop accsetb ea ; CPU开中断reti ; 中断返回led_flow: mov a, #0ffh ; 左右流水灯子程序clr c ; 清Cy进位标志位mov r7, #08h ; 左循环次数lloop: rlc a ; a循环左移mov p0, a ; a送P0口lcall del100ms ; 延时100msdjnz r7, lloop ; 左移8次mov r6, #06h ; 右循环次数rloop: rrc amov p0, alcall del100msdjnz r6, rloopretkey_flash: mov a, #00h ; 灯闪5次子程序mov r5, #10 ; 闪一次有一亮一灭loop2: mov p0, acall del100mscpl a ; 取反djnz r5, loop2retdel10ms: ; 10ms延时子程序(12M) mov r4, #20temp1: mov r3, #248djnz r3, $djnz r4, temp1retdel100ms: mov r2, #0c3h ;100.036mstemp2: mov r1, #0ffhdjnz r1, $djnz r2, temp2retend引用地址:/trackback.asp?id=17770。