中断向量表地址
- 格式:ppt
- 大小:709.51 KB
- 文档页数:133
深入C51中断向量表在FLASH 中有一组特殊的保留单元000H~00ABH0000H-0002H 这三个单元包含一个无条件跳转指令(LJMP),当系统复位后,PC=0000H,跳转到main 函数(不确切)LJMP 是三字节指令。
就是由指令码02H(一个字节) + 16 位地址(2 个字节)组成16 位地址就是Main()函数的地址,其实也不然,由于main()函数在调用之前,要进行堆栈的初始化之类的工作,在KEIL 中,这部分代码是自动生成的(对于C 程序来说),跳转地址实际就是这个堆栈汇编的代码开头处!以下是一个C 程序转换成汇编的部分代码C:0x0000 020410 LJMP C:0410 ;跳转到堆栈初始化的开头处. ......................................................... ;中断向量表C:0x0023 020527 LJMP UART0_ISR(C:0527) ;跳转到串口中断函数地址C:0x0410 787F MOV R0,#0x7F ;堆栈初始化程序C:0x0412 E4 CLR AC:0x0413 F6 MOV @R0,AC:0x0414 D8FD DJNZ R0,C:0413C:0x0416 75814F MOV SP(0x81),#0x4FC:0x0419 020457 LJMP C:0457C:0x041C 02049C LJMP main(C:049C) ;跳转到mainvoid UART0_ISR (void) interrupt 4 using 3 ;串口中断函数C:0x0527 C0E0 PUSH ACC(0xE0)C:0x0529 C083 PUSH DPH(0x83)C:0x052B C082 PUSH DPL(0x82)。
显然当我们编写C 程序代码的时候,000H~00ABH 的内容KEIL 编译转换成汇编后,会自动帮我们添加。
关于STM32 中断向量表的位置、重定向问题首先我们需要跳到main 函数,这个就不多说了。
那么,中断发生后,又是怎么跑到中断入口地址的呢?从stm32f10x.s 可以看到,已经定义好了一大堆的中断响应函数,这就是中断向量表,标号__Vectors,表示中断向量表入口地址,例如:AREA RESET, DATA, READONLY ; 定义只读数据段,实际上是在CODE 区(假设STM32 从FLASH 启动,则此中断向量表起始地址即为0x8000000)EXPORT __Vectors IMPORT OS_CPU_SysTickHandler IMPORT OS_CPU_PendSVHandler__Vectors DCD __initial_sp ; Top of Stack DCD Reset_Handler ; Reset Handler DCD NMI_Handler ; NMI Handler DCD HardFault_Handler ; Hard Fault Handler DCD MemManage_Handler ; MPU Fault Handler DCD BusFault_Handler ; Bus Fault Handler DCD UsageFault_Handler ; Usage Fault Handler 这个向量表的编写是有讲究的,跟硬件一一对应不能乱写的,CPU 找入口地址就靠它了,bin 文件开头就是他们的地址,参考手册RM0008 的10.1.2 节可以看到排列。
我们再结合CORTEX-M3的特性,他上电后根据boot 引脚来决定PC 位置,比如boot 设置为flash 启动,则启动后PC 跳到0x08000000。
此时CPU 会先取2 个地址,第一个是栈顶地址,第二个是复位异常地址,故有了上面的写法,这样就跳到reset_handler。
那么这个reset_handler 的实际地址是多少.?下面的一堆例如Nmi_handler 地址又是多少呢?发生中断是怎么跑到这个地址的呢?下面挨个讲解。
一、选择题1. 已知中断类型码为18H,则中断服务程序入口地址存放在中断矢量表的( C )?A.0000H:0072H~ 0000H:0075HB. 0000H:0072H~ 0000H:0073HC. 0000H:0060H~ 0000H:0063HD. 0000H:0060H~ 0000H:0061H2. 在中断系统中,中断类型码是在( D)控制下送往CPU的。
A.中断请求信号INTRB.读信号C.地址译码信号D.中断响应信号3. 8086/8088的中断向量表用于存放( B )。
A.中断类型号B. 中断服务程序入口地址C. 中断服务程序D. 中断服务程序返回地址4. 8259的OCW1――中断屏蔽字( C )设置。
A.在ICW之前B. 只允许一次C. 允许多次D. 仅屏蔽某中断源5. 一个8259可提供(B )中断类型号。
A.1B. 8C. 16D. 646. 响应NMI请求的必要条件是( D )。
A.IF=1B. IF=0C. 一条指令结束D. 无INTR请求7. 响应INTR请求的必要条件是( B)。
A. IF=0B. IF=1C. TF=0D. TF=18. 当8086CPU的INTR=1且IF=1时,则CPU完成( C )后,响应该中断请求,进行中断处理。
A.当前时钟周期B.当前总线周期C. 当前指令周期D. 下一个指令周期9. INTn指令中断是( C )。
A.由外设请求产生B. 由系统断电引起C. 通过软件调用的内部中断D. 可用IF标志屏蔽的10. 8086/8088中断是向量中断,其中断服务程序的入口地址是( D )提供。
A.外设中断源B. CPU中断逻辑电路C. 从中断控制器读回中断类型号左移2位D. 由中断类型号指向的中断向量表中读回11. 9个8259A级连可提供( D )中断类型号。
A.1B. 8C. 16D. 6412. 8259普通EOI命令适用于( B )方式中的中断结束。
1.什么是中断?什么是中断向量?中断向量表的地址范围?答:中断就是CPU在执行当前程序时由于内外部事件引起CPU暂时停止当前正在执行的程序而转向执行请求CPU暂时停止的内外部事件的服务程序,该程序处理完后又返回继续执行被停止的程序;中断向量是中断处理子程序的入口地址;地址范围是00000H-003FFH。
2.3.微机系统的硬件由哪几部分组成?答:微型计算机(微处理器,存储器,I/0接口,系统总线),外围设备,电源。
4.什么是微机的总线,分为哪三组?答:是传递信息的一组公用导线。
分三组:地址总线,数据总线,控制总线。
5.8086/8088CPU的内部结构分为哪两大模块,各自的主要功能是什么?答:总线接口部件(BIU)功能:根据执行单元EU的请求完成CPU与存储器或IO 设备之间的数据传送。
执行部件(EU),作用:从指令对列中取出指令,对指令进行译码,发出相应的传送数据或算术的控制信号接受由总线接口部件传送来的数据或把数据传送到总线接口部件进行算术运算。
6.8086指令队列的作用是什么?答:作用是:在执行指令的同时从内存中取了一条指令或下几条指令,取来的指令放在指令队列中这样它就不需要象以往的计算机那样让CPU轮番进行取指和执行的工作,从而提高CPU的利用率。
7.8086的存储器空间最大可以为多少?怎样用16位寄存器实现对20位地址的寻址?完成逻辑地址到物理地址转换的部件是什么?答:8086的存储器空间最大可以为2^20(1MB);8086计算机引入了分段管理机制,当CPU寻址某个存储单元时,先将段寄存器内的内容左移4位,然后加上指令中提供的16位偏移地址形成20位物理地址。
8.段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?指向这一物理地址的CS值和IP值是唯一的吗?答:指令的物理地址为21F00H;CS值和IP值不是唯一的,例如:CS=2100H,IP=0F00H。
一、单选题:将正确答案的序号填入上。
1.1 在PC/XT微机中,NMI中断的中断向量在中断向量表中的位置是。
(C)A. 由程序指定的B. 由DOS自动分配的C. 固定在0008H开始的4个字节中D. 固定在中断向量表的表首1.2 如果有多个中断同时发生,系统将根据中断优先级响应优先级最高的中断请求。
若要调整中断事件的响应顺序,可以利用。
(B)A. 中断响应B. 中断屏蔽C. 中断向量D. 中断嵌套1.3 8086对下列中断优先级响应最高的请求是。
(C)A. NMIB. INTRC. 内部软件中断D. 单步中断1.4 执行INT n指令或响应中断时,CPU入栈操作保护的次序是。
(A)A. FLAGS ,CS,IPB. CS,IP, FLAGSC. FLAGS ,IP,CSD. IP,CS, FLAGS1.5中断向量地址是。
(C)A. 子程序入口B. 中断服务程序入口地址C. 中断服务程序入口地址的地址D. 传送数据的起始地址1.6 8086的中断源来自两个方面,即。
(A)A. 外部中断和内部中断B. 可屏蔽和非屏蔽中断C. CPU产生的中断和软件中断D. 单步和溢出错1.7下面中断中,只有需要中断类型码。
(C)A. INTOB. INT nC. INTRD. NMI1.8 当多片8259A级联使用时,对于从8259A,级联信号CAS2~CAS0是。
(A)A. 输入信号B. 输出信号C. 双向信号D. 中断信号1.9 当用8259A中断控制器时,其中断服务程序执行EOI命令的作用是。
(B)A. 屏蔽正在被服务的中断,使其不再发出中断请求B. 清除该中断服务寄存器中的对应位,以允许同级或低级的中断能被响应C. 清除该中断请求寄存器中的对应位,以免重复响应该中断。
D. 判定优先级1.10 下列8259A的命令字中,必须在正常操作开始前写入的是。
(A)A. 初始化命令字ICWB. 操作命令字OCWC. 初始化命令字ICW1D. 初始化命令字ICW31.11 有三片8259级联,从片分别接入主片的IR2和IR5,则主8259的ICW3中的内容为;两片从片8259的ICW3的内容分别为。
微机原理习题解答(供参考)第1章习题和解答15. 将下列⼗进制数分别转化为⼆进制数、⼗六进制数和BCD码。
(1)15.32=(0000 1111.0101 0001)2=(0F.51)16=(0001 0101.0011 0010)BCD(2)325.16=(0001 0100 0101.0010 1000)2=(145.28)16=(0011 0010 0101.0001 0110)BCD(3)68.31=(0100 0100.0100 1111)2=(44.4F)16=(0110 1000.0011 0001)BCD(4)214.126=(1101 0110.0010 0000)2=(0D6.20)16=(0010 0001 0100.0001 0010 0110)BCD16. 将下列⼆进制数分别转化为⼗进制数和⼗六进制数。
(1)10110101= 181=0B5H(2)11001011= 203=0CBH(3)10101.1001= 21.5625=15.9 H(4) 101101.0101= 45.3125=2D.5H17. 将下列⼗六进制数分别转化为⼆进制数、⼗进制数。
(1)FAH=1111 1010B=250(2)12B8H=0001 0010 1011 1000B=4792(3)5A8.62H=0101 1010 1000.0110 0010B=1448.3828125(4)2DF.2H=0010 1101 1111.0010B=735.12518. 若X=-107,Y=+74按8位⼆进制可写出:。
[X]补=95H ,[Y]补=4AH , [X +Y]补=0DFH,[X-Y]补=4BH。
19.X=34AH,Y=8CH。
问:有三位和两位⼗六进制数X和Y,(1)若X,Y是纯数(⽆符号数),则:X+Y=3D6H;X-Y=2BEH。
(2)若X,Y是有符号数,则:X+Y=2D6 H;X-Y=3BEH。
第7章输入/输出与中断一、自测练习题㈠选择题1.一微机系统有10根地址线用于I/O端口寻址,因而具有I/O空间的范围是( )字节。
A) 1024 B) 10K C) 0.5M D) 1M2.8086CPU读/写一次存储器或I/O端口所需的时间称为一个( )。
A) 总线周期 B) 指令周期 C) 时钟周期 D) 基本指令执行时间3.微型计算机的输入/输出有三种不同的控制方法,其中以( )控制的输入/输出是微机进行I/O的一种最主要的控制方式。
A) 程序控制 B) 中断控制C) DMA控制D) 以上均可4.程序查询I/O方式的工作流程是按( )的次序完成一个字符的传输。
A) 写数据端口,读/写控制端口B) 读状态端口,读/写数据端口C) 写控制端口,读状态端口,写数据端口D) 随I/O接口的具体要求而定5.在CPU与外设的I/O传送控制方式中,效率高、实时性强的方式是( )。
A) 同步传送 B) 查询传送 C) 无条件传送 D) 中断传送6.在CPU与外设的I/O传送控制方式中,传送速度最快的方式是( )。
A) 无条件传送 B) 查询传送 C) 中断传送 D) DMA传递7.用具有两个状态(“0”和“1”态)的一组开关作简单输入设备时,应采用( )传送方式来输入信息。
A) 无条件B) 查询C) 中断D) DMA8.用一组发光二极管作为简单输出设备时,应采用( )传送方式来输出信息。
A) DMA B) 无条件C) 查询D) 中断9.在微机系统中引入中断技术,可以( )。
A) 提高外设速度B) 减轻主存负担C) 提高处理器的效率D) 增加信息交换的精度10.CPU响应中断请求的时刻是在( )。
A) 执行完成正在执行的程序以后 B) 执行完正在执行的指令以后C) 执行完本时钟周期以后D)执行完正在执行的机器周期以后11.8086/8088CPU向应两个硬中断INTR和NMI时,相同的必要条件是( )。
A) 允许中断B) 当前I/O操作执行结束C) 总线空闲D) 当前访问内存操作结束12.在微型计算机系统中,高速外设与内存储器进行批量数据传送时,应采用( )。
微机原理与接口技术第六章-8259A练习题及答案中断技术和中断控制器8259A练习题及答案一、填空题1.8088微处理器最多能处理256种不同类型的中断。
2.8088系统的中断向量表位于从内存地址 00000H 开始,占1K字节存储单元。
3.8088CPU响应INTR中断时,将PSW(或标志寄存器内容)和断点(或CS:IP)进堆栈保存。
4.8259A可管理8级优先级中断源,通过级联,最多可管理 64 级优先级中断源。
5.若8259A的IRR(中断请求寄存器)的内容为10H,说明IR4请求中断。
二、选择题6.8088CPU的标志寄存器中IF=1时,表示允许CPU响应______中断。
CA.内部中断B.外部中断C.可屏蔽中断D.不可屏蔽中断7.CPU在响应中断时,保存断点是指______。
DA.将用户设置的程序指令地址入栈保存B.将中断服务程序的入口地址入栈保存C.将程序状态字PSW入栈保存D.将返回地址即程序计数器PC(CS:IP)的内容入栈保存8.8088的中断向量表用于存放______。
BA.中断类型号B.中断服务程序的入口地址C.中断服务程序的返回地址D.断点地址三、判断题9.8086的可屏蔽中断的优先级高于不可屏蔽中断。
[ ] ×10.通常8259A芯片中的IR0优先级最低,IR7的优先级最高。
[ ]×11.在8088系统中,所谓中断向量就是中断服务程序入口地址。
[ ] √四、简答题12.CPU响应INTR中断的条件是什么?答:(1)INTR信号为有效电平(2)当前指令执行完毕(3)CPU开中断(IF=1)(4)没有更高级的请求(RESET , HOLD ,NMI)13.一般CPU响应中断时自动做哪些工作? 8088CPU呢?答:一般CPU在响应中断时,关中断,保存断点,识别中断源,找到中断服务程序入口地址,转入中断服务程序。
8080CPU在响应中断时,首先把PSW(或标志寄存器内容)入栈保存,其余同一般CPU.14.8088CPU在执行中断返回指令IRET时,执行什么操作?答:(1)弹出断点送CS:IP第 - 2 - 页共 13 页(2)弹出PSW送标志寄存器15.中断控制器8259A中下列寄存器的作用是什么?(1) IRR (中断请求寄存器) :保存中断源的中断请求(2) IMR (中断屏蔽寄存器) :屏蔽/允许中断源请求中断,由程序写入,1为屏蔽,0为允许(3) ISR (中断服务寄存器): 记录CPU正在为哪些中断源服务(4) IVR (中断向量寄存器): 保存中断向量号16、初使化时设置为非自动结束方式,那么在中断服务程序将结束时必须设置什么操作命令?如果不设置这种命令会发生什么现象?答案:当中断服务程序将结束时,必须发0CW2=20H为中断结束命令,执行此命令即撤消正在服务的中断请求和服务标志;否则,即使返回主程序但未退出此中断,造成中断响应的混乱。