中断向量表详解
中断向量表——精选推荐
中断向量表中断向量表是DSP程序的重要组成部分,当有中断发生并且处于允许状态时,程序指针跳转到中断向量表中对应的中断地址。
由于中断服务程序一般较长,通常中断向量表存放的是一个跳转指令,指向实际的中断服务程序。
下面是5402中断向量表的一个范例,可以作为模板,使用时稍作修改就行:******************************************************************5402V ectors.asm*完整的5402中断向量表示例*5402共有30个中断向量,每个向量占4个字的空间。
*使用向量一般用一条跳转指令转到相应中断服务子程序,其余空位用NOP填充*未使用的向量直接用RETE返回,是为了防止意外进入未用中断。
***************************************************************** .sect ".vectors" ;开始命名段.vecotrs.global CodeStart ;引用程序入口的全局符号定义…;引用其它中断程序入口的全局符号定义.align 0x80 ;中断向量表必须对齐128字的页边界RESET: B CodeStart; Reset中断向量,跳转到程序入口NOP ;用NOP填充表中其余空字NOP ;B指令占了两个字,所以要填两个NOPNMI: RETE ;不可屏蔽中断NOPNOPNOP; 软件中断SINT17 .space 4*16 ;软件中断使用较少,简单起见用0填充SINT18 .space 4*16SINT19 .space 4*16SINT20 .space 4*16SINT21 .space 4*16SINT22 .space 4*16SINT23 .space 4*16SINT24 .space 4*16SINT25 .space 4*16SINT26 .space 4*16SINT27 .space 4*16SINT28 .space 4*16SINT29 .space 4*16SINT30 .space 4*16INT0: RETE ;外部中断INT0NOPNOPNOPINT1: RETE ;外部中断INT1NOPNOPNOPINT2: RETE ;外部中断INT2NOPNOPNOPTINT: RETE ;Timer0中断NOPNOPNOPBRINT0: RETE ;McBSP #0 接收中断NOPNOPNOPBXINT0: RETE ;McBSP #0 发送中断NOPNOPNOPDMAC0: RETE ;无定义(默认)DMA0中断NOPNOPNOPTINT1: RETE ;Timer1中断(默认)或DMA1中断. NOPNOPNOPINT3: RETE ;外部中断3NOPNOPNOPHPINT: RETE ;HPI中断NOPNOPNOPBRINT1: RETE ;McBSP #1接收中断(默认)或DMA2中断NOPNOPNOPBXINT1: RETE ;McBSP #1发送中断(默认)或DMA3中断NOPNOPNOPDMAC4: RETE ;DMA4中断NOPNOPNOPDMAC5: RETE ;DMA5中断NOPNOPNOP.end在本实验中只要把在开头加上中断子程序标号的引用,并在中断表的TINT部分换成跳转指令就行了:*vectors.asm for 方波发生.sect ".vectors" ;开始命名段.vecotrs.global CodeStart ;引用程序入口的全局符号定义.global TINT0_ISR ;引用Timer0中断子程序<节省篇幅,中间省略>TINT: B TINT0_ISR ;Timer0中断NOPNOPBRINT0: RETE ;McBSP #0 receive interrupt<节省篇幅,下略>技巧提示:只有第一个中断(Reset中断)是每个程序都应该有的,在不需要其它中断的情况下,可以只用这一部分,后面可以省略。
DSP中断向量表和中断子向量表(精)
DSP中断向量表和中断子向量表DSP中断向量表和中断子向量表类别:单片机/DSP本案例在介绍数字PID控制器和模糊Pl控制器的DSP应用程序设计的同时,还介绍TI公司C2000系列DSP芯片开发时,中断向量表和中断子向量表的编写和配置方法。
一个实用DSP程序除包括主程序和系统初始化程序以及存储器配置文件之外,还需要有中断向量表和中断子向量表程序,对于一个DSP控制器来说,中断的使用和管理是不可缺少的。
在系统中,控制器的作用就是控制整个系统实时、有序地按照程序的要求运行,而DSP只有一个CPU,所以只有L个进程,当外部设各要求DSP控制时,就采用中断的方式,DSP根据中断的优先级,通过响应中断并执行中断服务子程序(ISR)来对外部设各进行控制。
一个正确的中断向量表和中断子向量表程序能够使系统正常运行,并能保证在系统不正常时自动恢复到程序初始化的状态,防止系统崩溃,提高工业控制的鲁棒性。
DSP LF2407有两级中断,第一级中断是CPU中断,共6个;第二级中断是外围设各中断,共46个。
由外设中断扩展控制器(PIE)和中断子向量表把外围设备中断映射到CPU中断,然后等待CPU的响应。
此外CPU中断向量表还包括19个软件中断和硬件复位中断(Reset)以及一个不可屏蔽申断(NMI)。
这种两级中断是采用集中化的中断扩展设计方法,特别适合有大量外设中断的工业控制系统。
以下就是采用通用定时器GPTI的比较操作来产生中断时,LF2407的中断向量表和申断子向量表程序。
当需要采用其他中断时,可以直接在此程序中根据需要修改。
该程序对LF2407来说是通用的,只是发生中断时,CPU要跳转的地址不一样而已。
对于一个实际的DSP系统来说,系统的中断管理是不可缺少的,因为目前任何DSP实时系统都具有中断,中断是DSP系统和外部世界发生实时联系的一个重要手段。
作为TI公司的C2000系列DSP,它是偏向于控制的DSP 芯片,因此它的中断管理更丰富和先进,读者理解起来也较困难。
中断向量表详解
8.4 BIOS中断调用8.4.1 BIOS中断调用概述BIOS (BasicInput/OutputSystem)是IBM-PC机的监控程序,它固化在微型机主板的ROM中,其内容主要有系统测试程序 (Post)、初始化引导程序(Boot)、I/O设备的基本驱动程序和许多常用程序模块,它们一般以中断服务程序的形式存在。
例如,负责显示输出的显示 I/O程序为10H号中断服务程序;负责打印输出的打印I/O程序为17H中断服务程序等。
图8.5 是用户程序和操作系统关系示意图,由图可见BIOS程序直接建立在硬件基础上,磁盘操作系统(DOS)和其他操作系统建立在BIOS基础上,各种高级语言 则建立在操作系统基础上。
用户程序可以使用高级语言,也可以调用DOS 或其他操作系统,还可以调用BIOS,甚至直接指挥硬件设备。
通常应用程序调用DOS提供的系统功能,完成输入/输出或其他操作,这样做用户可以少考虑硬件,实现起来容易。
图8.5 用户程序和操作系统关系示意图应用程序直接对硬件编程的优点是程序的效率高,缺点是需要程序员对硬件性能有较深的了解。
总的来说,编程复杂,所以一般不直接对硬件编程。
BIOS中断程序处于DOS功能调用和硬件环境之间。
和DOS功能调用相比其优点是效率高,缺点是编程相对复杂;和直接对硬件编程相比,优点是实现相对容易,缺点是效率相对低。
在下列情况下可考虑使用BIOS中断:(1)有些功能DOS没有提供,但BIOS提供了;(2)有些场合无法使用DOS功能调用;(3)其他原因。
8.4.2BIOS中断调用方法BIOS的调用实际上是利用每一台计算机中BIOS固有的I/O操作程序来方便地解决自己的问题,由于这些已经在计算机中了,故使用时不必要再把它写入自己的程序,只要指明它的操作位置就可以了。
1.BIOS调用的基本操作由于BIOS中的每一种功能调用往往包含不同的几个操作细节,因此调用时需要说明三部分,基本步骤为:(1)设置分功能号。
中断向量表
在DOS系统(实模式)下,从0x20开始,用于操作系统本身。
保护模式
在Linux下(保护模式),没有使用BIOS设置的中断向量表,0x00 ~ 0x1F是CPU保护模式下的默认中断向 量,而0x20开始,都是被Linux系统重新设置的。
X86占用的中断向量表如下: Linux自己设置的中断以后再添加。
谢谢观看
基本简介
基本简介
是指中断服务程序入口的偏移量与段基址,一个中断向量占据4字节空间。中断向量表是8086系统内存中最 低端1K字节空间,它的作用就是按照中断类型号从小到大的顺序存储对应的中断向量,总共存储256个中断向量。 在中断响应过程中,CPU通过从接口电路获取的中断类型号(中断向量号)计算对应中断向量在表中的位置,并 从中断向量表中获取中断向量,将程序流程转向中断服务程序的入口。
中断向量表
中断源的识别标志
目录
01 基本简介
02 列表
基本信息
中断源的识别标志,可用来形成相应的中断服务程序的入口或存放中断服务程序的首称为中断向量。在 Pc/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给 出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级的中断源的中断类型号。中 断类型号和中断向量之间有下面的关系:中断类型号×4=存放中断向量的首有了存放中断向量的首,从该开始的 4个存储单元中取出的就是中断服务程序的入口
微机原理与接口技术课程案例-7.中断向量表(已看)
1
中断之概念
“中断”意思为打断操作的顺序。CPU正在执行程 序,有个“中断”打断了指令的正常执行顺序,使得 CPU中止正在执行的程序转而去执行被称为中断服务程 序(ISR)的其它程序。
2
中断之目的
计算机系统中引入中断的目的主要有两个: 数据的传送; 异常的处理;
3
中断之种类
中断类型码固定(0、1、3、4)或由指令给出(n)
响应过程主要步骤:
① PUSH FLAGS ② IF=TF=0(关可屏蔽中断和单步中断) ③ PUSH CS ④ PUSH IP ⑤ 取中断向量送入IP’和CS’
PUSH CS/IP/FLAGS JMP CS’:IP’
18
中断响应过程(续)
外部中断响应过程
NMI DB
n
INTR
INTA
中断控 制器 8259A PIC
非屏蔽中断请求
可 屏 蔽
中 断 请 求
中断请求\排队\屏蔽
11
中断源的识别
8088/8086系统采用中断类型码n来识别不同的中断 源。每个中断源都有一个与它相对应的中断类型码n 。 溢出、断点、除法溢出、单步、非屏蔽中断的类型 码为固定值(4、3、0、1、2) 软件中断的类型码由指令INT n 给出(n) 可屏蔽中断的类型码由PIC(8259)给出(n)
8
与(外部)中断有关的引脚
与中断有关的控制线为:NMI和INTR、INTA NMI:上升沿出发。 INTR:高电平出发。 INTA:可屏蔽中断的响应信号。
9
中断过程
五个步骤:
中断请求
中断判优/排队
(有时还要进行中断源
识别)
请求
中断响应
BOOTLOADER中断向量表重定位深度解析(只给懂的人看)
Bootloader中断向量重定位问题1.Bootloader程序在内核Cortex-M0+内核中运行时需要进行地址跳转执行应用程序主程序,此时就涉及到了中断向量重定位问题,以下截图为单片机启动文件中的栈和堆空间大小分配以及中断向量表的分配:根据上图可以看到,_initial_sp栈顶指针和向量表起始地址均未设置。
默认情况下,cortex-m0+内核认为该表位于零地址处,且各向量占用4 字节,因此每个表项占用4 字节。
中断向量表里的中断跳转地址在编译后就定下来了,SCB->VTOR向量可动态调整就是让我们的程序运行后还能改变向量的跳转地址。
方法就是:在RAM重建一个中断向量表,在想改变的位置重新赋值新的跳转地址。
步隔离(确保接下来的所有指令都使用新配置)。
以上为改变中断向量表起始地址,经过_DSB()和_ISB()指令后接下来要给这些地址指针重新赋值,也就是在FlashLoader_ASM()和SRAMLoader_ASM()被调函数中重新配置MSP和PC 的值。
以SJ_FLASH_BASE=0x10000000,SJ_SRAM_BASE=0x20000000为例:0x10000000==1<<28 0x20000000==1<<29以上两个函数均是将SJ_FLASH_BASE或SJ_SRAM_BASE地址处存储的值赋给SP,再将地址值偏移4字节后得到的地址里存储的值给PC,上面过程类似启动文件中中断向量表里提到的Reset_Handler,也是先给_initial_sp栈顶指针赋值中断向量表起始地址,然后地址偏移4字节程序跳转到启动文件后面定义的Reset_Handler函数执行如下:区别只不过是_main和SystemInit代表的是入口地址常量,而前者是直接操作地址值。
针对以上用到的汇编指令解析如下:1.跳转指令BLX和BX、BL、B的区别,如下表所示:2.LDR为最常用的伪指令(伪指令只在编译程序时用到,由汇编器等开发工具决定),将32位立即数加载到寄存器中。
微机原理与接口技术课件 7.中断向量表(已看)
8259A的工作过程
8259A对中断请求的处理过程如下:
当某IRi有效时,IRR相应位置1 若有效的IRi未被屏蔽,则向CPU发出中断请求INT 检测到第1个INTA信号后,置ISRi=1,IRRi=0 检测到第2个INTA信号后,把ISRi=1中最高优先级 的中断类型码 n 放到DB上
19
可编程中断控制器8259A
PIC,Programmable Interrupt
可对8个中断源实现优先级控制 (单个管8个) 可扩展至对64个中断源实现优 先级控制(9个管64个) 可编程设置不同工作方式(多套 管理方案) 根据中断源向x86提供不同中断 类型码n(来访者1人1号) 引脚分配及功能见右图
的中断;
内部中断:由处理器电路或中断指令产生的中断,
如除0中断,int指令等。
4
8086的中断向量表
存放各类中断的中断服务程序的入口地址CS:IP(段 CS和偏移IP)——中断向量 表的地址位于内存的00000H~003FFH,大小为 1KB,共256个中断向量(中断向量表) 每个中断向量占用4 Bytes,低字为段内偏移IP,高 字为段基址CS 根据中断类型号n获得中断服务程序入口的方法: 中 断向量在IVT中的存放地址=4×n (中断向量地址)
中断指令 INT n
(n=0~255)
软件 硬件
外部/硬件中断请求
2
NMI
非屏蔽中断请求
可 屏 蔽
中 断 请 求
11
DB
3 中断逻辑
n 中断控 制器 8259A PIC
0
1
单步中断
内部排队 中断开关
什么是中断?什么是中断向量?中断向量表的地址范围?
什么是中断?什么是中断向量?中断向量表的地址范围?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。
中断向量表
9H
9
按压或释放键时产生的中断
28H
0AH
10
保留单元
2CH
0BH
11
通讯设备使用的硬件中断
30H
0CH
12
通讯设备使用的硬件中断
34H
0DH
13
交替打印时硬件产生的中断
38H
0EH
14
软驱操作结束时产生的硬件中断
3CH
0FH
15
打印机发出警告信号时产生的硬件中断
7CH
1FH
31
指向一点阵表。在这个表中,BIOS能找到字符集后128个字符的点阵
80H
20H
32
终止程式的DOS功能调用
84H
21H
33
所有种DOS功能调用
88H
22H
34
指向DOS的结束地址
8CH
23H
35
指向DOS的Ctrl+Break处理程式
90H
24H
1D8H
76H
118
硬件中断14
1DCH
77H
119
硬件中断15
1E0-1FFH
78-7FH
120-127
未使用
200-217H
80-85H
128-133
为BASIC保留
218-3C3H
86-F0H
134-240
BASIC程式运行时提供给BASIC解释程式作用
70H
1CH
28
指向每1/18.2秒时可执行的服务程式的入口。初始化时该向量指向一条IRET指令。用户可修 改该向量,使他指向自己的Ctrl+Break 处理程式。
软硬中断以及中断向量表
软硬中断以及中断向量表概述中断(英语:Interrupt)是指处理器接收到来⾃硬件或软件的信号,提⽰发⽣了某个事件,应该被处理器注意,这种情况就称为中断。
通常,在接收到来⾃外围硬件(相对于中央处理器和内存)的异步信号,或来⾃软件的同步信号之后,处理器将会进⾏相应的硬件/软件处理。
发出这样的信号称为进⾏中断请求(interrupt request,IRQ)。
硬件中断导致处理器通过⼀个运⾏信息切换(context switch,也叫上下⽂切换)来保存执⾏状态(以程序计数器和程序状态字等寄存器信息为主);软件中断则通常作为CPU指令集中的⼀个指令,以可编程的⽅式直接指⽰这种运⾏信息切换,并将处理导向⼀段中断处理代码。
中断在计算机多任务处理,尤其是即时系统中尤为有⽤。
这样的系统,包括运⾏于其上的操作系统,也被称为“中断驱动的”(interrupt-driven)。
中断是⽤以提⾼计算机⼯作效率、增强计算机功能的⼀项重要技术。
最初引⼊硬件中断,只是出于性能上的考量。
如果计算机系统没有中断,则处理器与外部设备通信时,它必须在向该设备发出指令后进⾏忙等待(Busy waiting),反复轮询该设备是否完成了动作并返回结果。
这就造成了⼤量处理器周期被浪费。
引⼊中断以后,当处理器发出设备请求后就可以⽴即返回以处理其他任务,⽽当设备完成动作后,发送中断信号给处理器,后者就可以再回过头获取处理结果。
这样,在设备进⾏处理的周期内,处理器可以执⾏其他⼀些有意义的⼯作,⽽只付出⼀些很⼩的切换所引发的时间代价。
后来被⽤于CPU外部与内部紧急事件的处理、机器故障的处理、时间控制等多个⽅⾯,并产⽣通过软件⽅式进⼊中断处理(软中断)的概念。
在硬件实现上,中断可以是⼀个包含控制线路的独⽴系统,也可以被集成进存储器⼦系统中。
对于前者,在IBM个⼈机上,⼴泛使⽤(Programmable Interrupt Controller,PIC)来负责中断响应和处理。
arm cortex m0的中断向量
ARM Cortex-M0的中断向量表位于片上闪存起始地址处,是一个uint32_t类型的数组。
在系统复位后中断向量表始终是在0x00000000地址。
系统启动后可以对中断向量表进行重定向。
16位以后的中断为芯片厂商自行定义。
例如,Cortex-M3最多可以有32个中断。
中断向量表格式中每一位为一个32bit的地址,每一个地址对应一个中断函数的地址(第一位除外)。
除了第一位以外,所有地址的目标都为寻址寄存器(PC)。
当相应中断触发时,ARM Cortex-M 硬件会自动把中断向量表中相应的中断函数地址装载入寻址寄存器(PC)然后开始执行中断函数。
如何理解ARM异常、中断和向量表
如何理解ARM异常、中断和向量表以前,我一直很疑惑这个ARM异常、中断以及他们的向量表是怎么回事,他们到底是怎么实现的,没有想到今天偶然看到(ARM System Developers Guide: Designing and OpTImizing System Software的ARM异常、中断以及他们的向量表的章节,豁然开朗。
ARM嵌入式系统开发:软件设计与优化的英文原版我个人感觉这是国内翻译ARM书籍最好的一本之一,比杜XX的ARM体系结构与编程好千倍。
本书虽然说软件设计与优化,但是讲的硬件也很多,比如MMU和cache等,讲的精彩纷呈:我刚才想写关于MMU和cache的博客,发现太庞大,看来这段时间要重新看看这本书才能写。
下载地址:)下面来看看2.4 ExcepTIons, Interrupts, and the Vector TableWhen an excepTIon or interrupt occurs, the processor sets the pc to a specific memoryaddress. The address is within a special address range called the vector table. The entriesin the vector table are instrucTIons that branch to specific routines designed to handle aparticular exception or interrupt.当异常或者中断发生的时候,处理器设置PC为一个特殊的内存地址。
这个地址叫做中断向量表。
中断向量表入口是中断、异常的分支入ffff0000). Operating systems such as Linux andMicrosofts embedded products can take advantage of this feature.内存映射地址0x00000000 是为中断向量表保留的。
中断向量表
中断向量:向量就是确定确切位置的含义,中断向量的含义就是可以确定中断服务程序位置,也就是中断向量就是中断服务程序的首地址。
中断服务程序的首地址,需要4个内存空间存储。
中断类型码:我们把每个中断服务程序进行编号,这个号就代表一个中断服务程序,这个号就是终端类型码。
这个中断类型码是计算机用来查找中断向量用的。
中断向量表:存放所有的中断向量的地址空间。
也就说中断向量表是一片内存空间,是一片专门用来存放中断向量的内存空间。
中断向量表在内存单元的最低处,地址空间为00000H----003FFH(0-1024B),这个正好可以和终端类型码有一种对应的关系,也就是说终端类型码*4就等于这个中断向量的首地址。
下面讲重点:中断向量表属于内存中的RAM类型,就是说断电就没有内容了,那么再次开机的时候,它是怎么形成的呢?开机的时候,BIOS程序控制的电脑,BIOS程序将基本的中断程序的首地址填写到相应的中断向量表中,当DOS得到系统控制权的时候,它又向中断向量表中填写一些中断向量,同时,还会修改BIOS填写的一些中断向量(驱动程序的升级,这也是为什么我把这篇文章写在这的原因),当然,用户也可以更改和完善系统已有的中断向量。
中断向量表1、8088/8086中断向量表的作用是什么?【答】中断向量是中断服务程序的入口地址。
将所有中断向量集中放在一起,形成中断向量表。
8086系统有256个类型的中断源。
每个类型对应一个中断向量,一个中断向量由四个字节组成:2个高地址字节:存放中断服务程序的代码段的段值;2个低地址字节:存放中断服务程序的偏移地址。
中断向量表放在内存的地段地址0单元开始的单元:00000H~03FFFH。
2、什么叫中断向量?它放在哪里?对应于1CH的中断向量在哪里?如1CH中断程序从5110H:2030H开始,则中断向量应怎样存放?【答】中断向量是中断处理子程序的入口地址,它放在中断向量表中,由1ch*4=70h知中断向量存放在0000:0070处。
简述中断向量表及其作用
简述中断向量表及其作用
中断向量表简称IV,是计算机科学家用来提高安全性的一种工具。
例如,它可以在加密算法中起到重要作用,如Twofish、AES等,也可以应用于网络安全领域,如IPsec等。
IV表示一个有序的、可复制的、用于加密数据的“许可”,并且它是加密算法中不可或缺的一部分。
从定义上讲,中断向量表(IV)是一个特定大小的字符串,它是在特定的加密算法中用于装入加密轮的。
其作用是,在特定时刻,根据用于初始化加密轮的IV值确定每一轮加密的起始位置,从而阻止恢复秘密。
IV的大小一般为8个字节,也可以是16个字节或更多,取决于所采用的加密算法的复杂性。
对安全来说,IV的最重要作用是防止重放攻击(Replay attack),该攻击是指攻击者可以抓取加密后的数据,然后重复发送以实现一定的目的。
IV为被加密数据添加额外的随机性,从而使相同的明文加密后产生的不同的密文,从而防止重放攻击。
IV的另一种重要作用是它可以防止解密并重新加密的攻击(Decrypt and reencrypt attack),也就是攻击者可以解密用户的数据,然后重新加密,使用自己的密钥。
IV为加密轮提供了足够的随机性,使得攻击者无法确定哪一轮会加密和解密,从而影响重新加密的行为,因此可以有效防止此类攻击。
因此,中断向量表是计算机科学家最常用的工具之一,具有重要的安全作用,是防止重放攻击和解密重新加密攻击的重要组成部分。
它的大小一般在8-16个字节左右,根据不同的算法有所不同,但是IV都是加密算法的一部分,而且也是加密软件一般都会使用的安全技术。
linux 中断机制
Linux中断机制:中断向量表、中断描述符表、异常
处理程序与上下文切换
Linux中断机制主要包括以下部分:
1.中断向量表:在实地址模式中,CPU把内存中从0开始的1KB空间作为一
个中断向量表。
表中的每一项占4个字节。
但是在保护模式中,有这4个字节的表项构成的中断向量表不满足实际需求,于是根据反映模式切换的信息和偏移量的足够使得中断向量表的表项由8个字节组成,而中断向量表也叫做了中断描述符表(IDT)。
2.中断描述符表:在CPU中增加了一个用来描述中断描述符表寄存器
(IDTR),用来保存中断描述符表的起始地址。
3.异常处理程序:当CPU收到中断时,它会暂停当前正在运行的程序,跳转
到相应的中断处理程序去执行。
这些中断处理程序通常由内核中的驱动程序或者系统调用实现。
4.中断上下文切换:当一个中断处理程序结束时,CPU会保存当前的处理状
态,然后返回到被中断的程序中去,继续执行。
这个过程被称为上下文切换。
总的来说,Linux中断机制的作用是处理硬件设备输入输出的中断,使得CPU能够及时响应并处理这些事件,提高系统的实时性和效率。
中断向量表
DIV(IDIV)指令、INT指令、INTO指令、 单步执行(标志位TF=1)等。
▪ 8086中断优先权次序: 软件中断、NMI、INTR、单步执行最低。
4
软件中断(内部)
硬件中断(外部)
INT n 指令
非屏蔽中断请求
2
NMI
中断逻辑
INTR
3
4
1
0
中 断
可 屏
控
❖ 查询程序的两种实现方法
➢屏蔽法:用 TEST 指令,JNZ 实现跳转 ➢移位法:用 RCL 指令 ,JC 实现跳转
9
7-6 中断优先权的实现
➢屏蔽法:用 TEST 指令,JNZ 实现跳转
IN
AL,20H
TEST AL,80H
JNZ SERVE7
TEST AL,40H
JNZ SERVE6
TEST AL,20H
断请求,要求CPU作出及时处理。
❖实现故障处理:在计算机运行时,突然的故障可以通
过中断系统自行处理,而不必停机或报告工作人员。
2
7-2 中断源
▪ 引起中断的原因或能发出中断申请的来源称为中断源。 ❖ 一般的输入/输出设备(如键盘、打印机) ❖ 数据通道中断源(磁盘、磁带等) ❖ 实时时钟 ❖ 故障源(如电源掉电) ❖ 为调试程序而设置的中断源(断点和单步执行)
13
CS
用 Type FF
IP
户
可
:
用
CS
Type 40
IP
CS
Type 3F
系
IP
统
:
保
留 Type 5
CS
IP
CS Type 4
汇编中断调用表(中断向量表)
汇编中断调⽤表(中断向量表)中断 0: 除数为0错中断 1: 单步中断中断 2: 不可屏蔽中断 NMI中断 3: 断电中断 (CCH)中断 4: 溢出中断中断 5: 屏幕打印中断中断 6-7: 保留中断 8: 计时器中断(18.2/秒)中断 9: 键盘中断中断 A-D: 保留中断 E: 软盘机中断中断 F: 保留中断 10: 屏幕I/O调⽤中断 11: 设备检查调⽤中断 12: 存贮器检查调⽤中断 13: 软盘机I/O调⽤中断 14: RS-232 I/O 调⽤中断 15: 盒带机I/O调⽤中断 16: 键盘I/O调⽤中断 17: 打印机I/O调⽤中断 18: ROM-BASIC⼊⼝.中断 19: 引导装⼊程序.中断 1A: ⽇时调⽤.中断 1B: 键盘阻断时得到控制权.中断 1C: 时钟中断时得到控制权.中断 1D: 指向CRT初始参数表.中断 1E: 指向盒带参数表.中断 1F: 1KB图形模式CRT⽤第128⾄256号字符.中断 20: 结束DOS程序.中断 21: DOS功能调⽤.中断 22: 结束地址 (建议⽤EXEC功能调⽤).中断 23: DOS Ctrl-Break退出地址.中断 24: DOS 致命错向量.中断 25: DOS 绝对磁盘读.中断 26: DOS 绝对磁盘写.中断 27: 结束程序并贮留(建议⽤31H功能调⽤).中断 28-3F: DOS 保留.中断 40-7F: 未⽤.中断 80-85: BASIC保留.中断 86-F0: BASIC解释程序⽤.中断 F1-FF: 未⽤=====================================================IBM PC 的中断 INT 10:.00H 屏幕⽅式设置.⼊⼝: AH=0, AL=显⽰⽅式代码.(0-6)0: 40x25 ⿊⽩ 1: 40x25 彩⾊ 2: 80x25 ⿊⽩ 3: 80x25 彩⾊⽂本⽅式4: 320x200 彩⾊ 5: 320x200 ⿊⽩ 6: 640x200 ⿊⽩图形⽅式7: 80x25 单⾊字符 (单⾊显⽰器).01H 设光标⼤⼩⼊⼝: AH=1, CH=光标起始⾏号(00-0C), CL=光标结束⾏号(00-0C), 且CH<CL..02H 光标定位⼊⼝: AH=2, BH=页号, DH:DL=起始⾏:列..03H 读光标位置⼊⼝: AH=3, BH=页号. 返回: DH:DL=起始⾏:列..06H 窗⼝上卷⼊⼝: AH=6, AL=窗⼝上卷⾏数(AL=0 卷动整个窗⼝);CH:CL -DH:DL 窗⼝坐标.07H 窗⼝下卷⼊⼝: AH=7, AL=窗⼝下卷⾏数CH:CL -DH:DL 窗⼝坐标.08H 读当前光标处字符和属性⼊⼝: AH=8, BH=页号. 返回: AH:AL=字符的颜⾊:字符的ASCII码显⽰字符的颜⾊定义如下:; 1 2 3 4 5 6 7 8┌─┬─┬─┬─┬─┬─┬─┬─┐│BL│R│G│B│I│R│G│B│└─┴─┴─┴─┴─┴─┴─┴─┘ B-兰 G-绿 R-红闪 └───┘ 加 └───┘烁 字符底⾊ 亮 字符显⽰⾊.09H 在当前光标处写字符和属性(光标不下移).⼊⼝: AH=9, BH=页号, BL:AL=字符的颜⾊:字符的ASCII码, CX=重复次数..0AH 在当前光标处写字符(原有属性)⼊⼝: AH=0A, BH=页号, AL=字符的ASCII码, CX=重复次数..0BH ⾊彩设置⼊⼝: AH=0B, BL=0 设背景⾊, BH=0-15BL=1 设调⾊码, BH=0-1.0CH 写图形点⼊⼝: AH=0C, CX:DX=列号:⾏号, AL=颜⾊..0DH 读图形点⼊⼝: AH=0D, CX:DX=列号:⾏号. 返回: AL=颜⾊,.0EH 在当前页、当前光标处写字符⼊⼝: AH=0E, AL=字符的ASCII码, BL=前景⾊..0FH 显⽰器状态⼊⼝: AH=0F. 返回: AL=当前显⽰器⽅式, AH=屏幕列数, BH=当前页号=================================================================================== IBM PC 的键盘中断 INT 16:.00H 读⼀个键盘键⼊字符.⼊⼝: AH=0. 返回: AL=字符的ASCII码, AH=扫描码..01H 确认键盘是否键⼊字符.⼊⼝: AH=1. 返回: ZF=1 (Z) 未键⼊字符;ZF=0 (NZ)键⼊字符, AL=字符的ASCII码, AH=扫描码.键⼊字符同时留在键盘缓冲区..02H 读当前移位键状况.⼊⼝: AH=2.返回: AL=状态.7 6 5 4 3 2 1 0┌─┬─┬─┬─┬─┬─┬─┬─┐AL: │ │ │ │ │ │ │ │ │└─┴─┴─┴─┴─┴─┴─┴─┘│ │ │ │ │ │ │ ││ │ │ │ │ │ │ └─右Shift│ │ │ │ │ │ └─左Shift│ │ │ │ │ └─Ctrl│ │ │ │ └─Alt│ │ │ └─Scroll Lock│ │ └─Num Lock│ └─Capa Lock└─Ins====================================================================== ROM 中断 INT 13A.软盘机I/O调⽤(360K).00H 复位盘系统⼊⼝: AH =0返回: AH =磁盘状态0-坏命令, 1-盘上地址找不到, 3-写保护, 4-扇区找不到, ....01H 读磁盘状态⼊⼝: AH =1返回: AH =磁盘状态.02H 磁盘读⼊⼝: AH =2, DL =驱动器号(0-3), 0=A, 1=B, 2=CDH =头号(0或1), CH =道号(0-39H), CL =起始扇区号(1-9)AL =欲读扇区数(1-9), ES:BX =内存缓冲区⾸址.返回: AL =实际读⼊扇区数,AH =磁盘状态; 进位标志CF =0,出错; =1,成功..03H 磁盘写⼊⼝: AH =3, DL =驱动器号(0-3), 0=A, 1=B, 2=CDH =头号(0或1), CH =道号(0-39H), CL =起始扇区号(1-9)AL =欲写扇区数(1-9), ES:BX =内存缓冲区⾸址.返回: AL =实际写⼊扇区数,AH =磁盘状态; 进位标志CF =0,出错; =1,成功.B.硬盘机I/O调⽤⼊⼝: AH =0-3, DL =驱动器号(硬盘80H,81H), 80=C, 81=DDH =头号(硬盘0-15), CH =道号(0-1023), CL =起始扇区号(1-17)AL =欲读写扇区数, ES:BX =内存缓冲区⾸址.返回: AL =实际读⼊扇区数,AH =磁盘状态; 进位标志CF =0,出错; =1,成功.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.4 BIOS中断调用8.4.1 BIOS中断调用概述BIOS (BasicInput/OutputSystem)是IBM-PC机的监控程序,它固化在微型机主板的ROM中,其内容主要有系统测试程序 (Post)、初始化引导程序(Boot)、I/O设备的基本驱动程序和许多常用程序模块,它们一般以中断服务程序的形式存在。
例如,负责显示输出的显示 I/O程序为10H号中断服务程序;负责打印输出的打印I/O程序为17H中断服务程序等。
图8.5 是用户程序和操作系统关系示意图,由图可见BIOS程序直接建立在硬件基础上,磁盘操作系统(DOS)和其他操作系统建立在BIOS基础上,各种高级语言 则建立在操作系统基础上。
用户程序可以使用高级语言,也可以调用DOS 或其他操作系统,还可以调用BIOS,甚至直接指挥硬件设备。
通常应用程序调用DOS提供的系统功能,完成输入/输出或其他操作,这样做用户可以少考虑硬件,实现起来容易。
图8.5 用户程序和操作系统关系示意图应用程序直接对硬件编程的优点是程序的效率高,缺点是需要程序员对硬件性能有较深的了解。
总的来说,编程复杂,所以一般不直接对硬件编程。
BIOS中断程序处于DOS功能调用和硬件环境之间。
和DOS功能调用相比其优点是效率高,缺点是编程相对复杂;和直接对硬件编程相比,优点是实现相对容易,缺点是效率相对低。
在下列情况下可考虑使用BIOS中断:(1)有些功能DOS没有提供,但BIOS提供了;(2)有些场合无法使用DOS功能调用;(3)其他原因。
8.4.2BIOS中断调用方法BIOS的调用实际上是利用每一台计算机中BIOS固有的I/O操作程序来方便地解决自己的问题,由于这些已经在计算机中了,故使用时不必要再把它写入自己的程序,只要指明它的操作位置就可以了。
1.BIOS调用的基本操作由于BIOS中的每一种功能调用往往包含不同的几个操作细节,因此调用时需要说明三部分,基本步骤为:(1)设置分功能号。
按实现的操作功能的要求,给指定寄存器(通常为AH)送入分功能号。
(2)设置入口参数。
按操作要求,给寄存器填写相应参数的内容(某些调用无参数)。
(3)使用中断语句INTn。
执行调用的功能,其中n为中断号。
(4)分析出口参数。
具体步骤如图8.6所示。
图8.6分析出口参数具体步骤例如:MOV AH,0;分功能号为0MOV AL,10H;置入口参数INT 1AH;1AH为中断号,功能为读时间计数器的值2.键盘输入功能调用BIOS中断16H为键盘输入。
16H号中断有三个功能,功能号要求放在AH中,具体功能见表8-3。
图8.7 功能键状态(AH)=0时,读键盘键入的一个ASCII码字符,返回字符码在AL中,扫描码在AH;(AH)=l时,读键盘键入的一个ASCII码字符,并设置ZF 标志位:若按过一键(键盘缓冲区不空),ZF=0,否则ZF=1;(AH)=2时,读特殊功能键的状态送AL,AL各位含义见图8.7表8-3BIOS键盘中断(INT16H)在内存0040: 0017中记录了双态键和组合键的状态,该字节称为键盘状态字节KB-FLAG,其中,高4位表示键Insert、CapsLock、NumLock和 ScrollLock 是ON(=1)还是OFF(=0),低4位表示键Alt、Ctrl、左Shift和右Shift是否按动,若按动,则置1。
这8个键 有时又称为变换键通过INT16H的功能2可以查看上述8个键的状态,有关程序段如下: MOV AH,2INT 16H;取键盘状态送入AL中TEST AL,10000000B;测试键盘状态字节第7位JE INSOFF;如果是0,则转至INS处于OFF的程序段INSOFF:用户通过程序改变键盘状态字节的内容,等效于敲入了对应的键,下面4句汇编语句使Insert键置于ON状态。
MOV AX,0MOV ES,AXMOV AL,10000000BORES:[417H],AL【例8-6】从键盘读入0~9中任一数,根据不同数显示不同的字符串。
要求用BIOS中断来接收键盘输入。
程序如下:STACK SEGMENT PARA STACK;堆栈段定义DB 256 DUP(?)STACK ENDSDATA SEGMENT PARA PUBLIC 'DATA';数据段定义,设每字符THIRTY DB 30;串长30PARM DB 128 DUP(0)MSG0DB'ILIKEIBMPC…'MSG1 DB '8080PROGRAMMINGISRUN…'MSG2 DB 'TIMETOBUYMANYDISKETTES…'MSG3 DB 'THISPROGRAMWORKS…'MSG4 DB 'TURNOFFTHATPRINTER!…'MSG5 DB 'IHAVEMANY…'MSG6 DB 'THEPSPCANBEUSEFUL…'MSG7 DB 'BASICWASEASIERTHENTHIS…'MSG8 DB 'DOSISINDISPESABLE…'MSG9DB'LASTMESSAGEOFTHEDAY..'ERRMSG DB 'ERROR!INVALIDPARAMETER!!!‘DATAENDSCODE SEGMENT PARA PUBLIC 'CODE';代码段START PROC FARASSUME CS:CODEPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV ES,AXASSUME ES:DATAMOV DX,AXASSUME DS:DATAMOV AH,0;功能号为0INT 16H;键盘输入,字符在AL中SUB AL,'0';减去字符‘0’的ASCII码 JC ERROR;键入字符编码小于30H转 CMP AL,9;是9吗JAE RROR;大于9转,否则顺序执行 MOV BX,OFFSETMSG0;MSG0位移送BX MUL THIRTY;(AL)×30ADD BX,AX;计算输入信息在信息表中的位移CALLDISPLAY;转子显示信息 RET;返回ERROR:MOV BX,OFFSET ERRMSG;出错显示信息位移送BX CALLDISPLAY;转子显示信息 RET;返回DISPLAY PROC NEARMOV CX,30;显示字符个数DISP1:MOV AL,[BX]CALL DISPCHAR;专显示字符子程序 INC BXLOOP DISP1MOVDL,0DH;显示回车符CALL DISPCHARMOV DL,0AH;显示换行符CALL DISPCHARRETDISPLAY ENDPDISPCHAR RPOC NEAR;显示AL中字符号程序PUSH BXMOV BX,0MOV AH,14;14号功能调用为输出字符INT 10HPOP BXRETDISPCHAR ENDPCODE ENDSEND START3.BIOS显示功能调用显示器是微型机系统重要的输出设备。
显示器与微型机之间的接口电路又称做显示适配器(显 示卡)。
显示卡的种类很多,有MDA卡、HGC卡、CGA卡、EGA 卡和VGA卡等。
IBM-PC和PC/XT单色显示器使用单色显示器适配器MDA (MonochromeDisplayAdapter)卡,它不支持图形方式,只支持80列和25行的文本方式。
文本方式又称为字符方式、字符/数字方 式。
IBM-PC和PC/XT彩色显示器使用彩色/图形适配器CGA(ColorGraphicsAdapter)卡,支持文本和图形两种方式且有单色、 彩色两种显示。
有关显示输出的DOS功能调用不多,而BIOS调用(INT10H)的功能很强,主要包括设置显示方式,设置光标大小和位置,设置调色板号,显示字符和显示图形等,见表8-4。
下面做简单介绍。
表8-4中断类型10H的功能调用操作1)显示方式的设置INT10H的0H功能用来设置显示方式,详见表8-4。
方式0~6是CGA卡的工作方式,其中,0~3是文本方式,4~6是图形方式。
方式7是MDA卡的惟一工作方式。
文本方式在屏幕上显示字符,字符在屏幕上的位置用行、列坐标表示,如图8.8所示。
25×80文本方式下的行号为0~24,列号为0~79,则屏幕左上角为第0行、第0列,右下角为第24行、第79列。
也就是说,文本方式下屏幕上显示的字符位置是固定的。
屏幕各行列号所确定的位置的显示内容,由显示卡上的显示存储器的对应位置的存储单元提供,这就是屏幕的“存储器映像”。
即如果向某显示存储器写入字符的ASCII码,字符就会显示在屏幕的相应位置上。
对应的显示在屏幕上的每个字符在存储器中由连续的两个字节表示,一个字节保存字符ASCII码,另一个字节保存字符属性。
在屏幕上仅显示字母、数字和一些字符图形的方式就是文本方式。
在文本方式下字符的属性字节既适用于单色显示也适用于彩色显示。
图8.8 显示器屏幕字符位置图(1)单色字符显示。
该显示方式定义了字符显示的特性,包括字符是否闪烁,是否加亮,是否反显(白底黑字)。
单色字符显示属性字节的各位功能如图8.9所示,各位的不同组合将使字符呈现不同的属性,如表8-5所示。
(2) 彩色字符显示。
在显示彩色文本时,字符的属性字节用于定义前景(显示的字符)和背景的颜色,每个字符可以选择16种颜色中的一种,而背景只能选择8种颜色 之一。
图8.10给出了以16色文本方式显示的属性字节的各位内容。
前景的16种颜色由D0~D3位组合,R、G和B分别代表红(Red)、绿 (Green)和蓝(Blue),BL表示闪烁,I为亮度。
闪烁和亮度仅适用于前景。
表8-6列出了16色字符方式颜色的组合。
图8.10 16色文本方式属性字节内容表8-616种颜色的组合(3) 显示存储器。
对所有的显示适配器,文本方式下显示字符的原理都是一样的,差别仅是不同适配器的视频显示存储器的起始地址不同:MDA的显存起始地址为 B000:0000;CGA、EGA和VGA的显存起始地址为B800:0000。
每个字符的ASCII码和属性码存放于连续的两个字节中。
显示存储单元 与屏幕上字符的对应关系如图8.11所示。
在25 ×80的文本显示方式下,屏幕有2000个字符位置,由于每个字符用两个字节表示,所以需要显存容量为4KB(4000B)。
如果有16KB显存,则可以 保存4屏显示字符的数据,通常称为4页数据。
对CGA、EGA和VGA的80列显示方式,0页在显存中的起始地址为B800:0000,1页为B800: 1000,2页为B800:2000,3页为B800:3000。