汇编语言课件第2章80X86微处理器.ppt

上传人:牧羊曲112 文档编号:6388971 上传时间:2023-10-26 格式:PPT 页数:142 大小:1.97MB
返回 下载 相关 举报
汇编语言课件第2章80X86微处理器.ppt_第1页
第1页 / 共142页
汇编语言课件第2章80X86微处理器.ppt_第2页
第2页 / 共142页
汇编语言课件第2章80X86微处理器.ppt_第3页
第3页 / 共142页
汇编语言课件第2章80X86微处理器.ppt_第4页
第4页 / 共142页
汇编语言课件第2章80X86微处理器.ppt_第5页
第5页 / 共142页
点击查看更多>>
资源描述

《汇编语言课件第2章80X86微处理器.ppt》由会员分享,可在线阅读,更多相关《汇编语言课件第2章80X86微处理器.ppt(142页珍藏版)》请在三一办公上搜索。

1、第2章 80X86微处理器,本章主要内容,8086的内部结构和引脚8086的寄存器组8086的工作模式8086的中断系统80386和80486的基本结构 要求掌握:8086的原理和工作时序、8086的中断系统原理、80386的基本结构。,2.1 80X86内部结构,8086/8088 内部结构从功能上,8086分为两部分,即1.总线接口部件(bus interface unit,BIU)2.执行部件(execution unit,EU),1.执行部件 EU,执行部件负责指令的执行,由下列4部分组成:算术逻辑部件(arithmetic logic unit)。标志寄存器 暂存寄存器 通用寄存器组

2、4个通用寄存器,即AX、BX、CX、DX4个专用寄存器,即基数指针寄存器BP(base pointer)堆栈指针寄存器SP(stack pointer)源变址寄存器SI(source index)目的变址寄存器DI(destination index);EU控制单元,2.总线接口部件BIU,总线接口部件负责与存储器、I/O端口传送数据,由下列3部分组成:指令队列缓冲器 16位的指令指针寄存器(IP Instruction Pointer)4个段地址寄存器(CS、DS、ES、SS)20位的地址加法器,如右图,2.1.2 80386微处理器80386内部主要组成总线接口部件(BIU)中央处理部件(

3、CPU)存储器管理部件(MMU),(1)总线接口部件(BIU)通过Dbus、Abus、Cbus完成与微处理器外部的联系,包括访问存储器预取指令、存储器数据读写、I/O端口数据读写等操作控制功能。(2)中央处理部件(CPU):各部件以并行方式进行工作代码预取部件:暂存从存储器中预取的代码,又称为预取指令队列指令译码部件:对预取指令队列中的指令进行译码,译码后送入译码指令队列等待执行。预译码时若发现为转移指令,则提前通知总线接口部件去取目标地址中的指令代码并取代原预取指令队列中的顺序指令代码,从而提高效率。控制部件:控制部件根据指令代码产生工作时序,指令执行部件:完成指令代码的执行一个32位的算术

4、运算单元(ALU)8个32位的通用寄存器,1个快速乘、除运算服务的64位移位寄存器(3)存储器管理部件(MMU)分段部件分页部件存储器采用段、页式结构4KB为一页,程序或数据以页为单位存储。存储器按段组织,最大4096MB。一个任务最多可含16K段,最大64TB存储结构中还采用了高速缓冲存储器(Cache),2.1.3 80486微处理器变化:沿袭80386的体系结构 内含高速缓存和浮点处理器面向多处理器的结构 具体结构总线接口、预取指令、指令译码、执行、控制、内存管理、高速缓存和浮点运算单元(FPU)基本指令用硬件逻辑执行,内含128位总线 高速缓存和FPU之间用两条32位总线直接相连 四路

5、成组联想高速缓存,2.2 80X86内部寄存器,2.2.1 8086的内部寄存器组1、通用寄存器 数据寄存器:AX、BX、CX、DX 变址和指针寄存器:SP、BP、SI、DI2、段寄存器 CS、DS、SS、ES3、状态标志寄存器FLAGS,标志寄存器共有16位,其中7位未用,所用的各位含义如下:根据功能,8086的标志可以分为两类:1.状态标志2.控制标志,15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0,状态标志有6个,即SF、ZF、PF、CF、AF和OF 符号标志SF(sign flag)零标志ZF(zero flag)奇偶标志PF(parity flag)进位标

6、志CF(carry flag)辅助进位标志(auxiliary carry flag)溢出标志OF(overflow flag)控制标志有3个,即 方向标志DF(direction flag)中断允许标志IF(interrupt enable flag)跟踪标志TF(trap flag)又称为单步标志,2.2.2 80386的内部寄存器,2.2.3 80386的内部寄存器,1通用寄存器 2段寄存器组3专用寄存器组4控制寄存器组5系统地址寄存器组6调试寄存器组 7测试寄存器组,1.通用寄存器,8个32位通用寄存器,可以作为16位用 EAX EBX ECX EDX ESI EDI EBP ESP,

7、2.段寄存器组,6个CSDSSSESFSGS,3.专用寄存器组,EFLAGS,4.控制寄存器,CR0:该寄存器目前仅用了低4位作为机器状态字,各位定义如下:保护允许位PE:PE=0,处于实地址方式;PE=1,进入保护虚地址方式。任务切换位 TS、仿真协处理器位EM、监控协处理器位MP为组合应用。TS,EM,MP=000,处于实地址方式,当前复位后的初始状态TS,EM,MP=001,有协处理器80387,不需要软件仿真。TS,EM,MP=010,无协处理器80387,要求用软件仿真。TS,EM,MP=101,有协处理器,不需软件仿真,产生任务切换。TS,EM,MP=110,无协处理器80387,

8、要求用软件仿真,产生任务切换。,CR0:该寄存器目前仅用了低4位作为机器状态字,各位定义如下处理器扩展类型位ET:ET1,采用与80387兼容的32位规程。ET0,采用与80287兼容的16位规程。分页允许位PG:PG=1,允许片内分页部件工作。PG=0,禁止分页部件工作。CR1:保留,为将来开发的Intel微处理器使用。CR2:包含一个32位的线性地址,指向页故障地址。CR3的功能:包含页目录表的物理地址,5.系统地址寄存器,系统地址寄存器有4个GDTR全局描述符表寄存器存放全局描述符表的32位线性基地址和16位界限值。IDTR中断描述符表寄存器 存放中断描述符表的32位线性基地址和16位界

9、限值。LDTR局部描述符表寄存器 存放局部描述符表的16位段选择符。TR任务状态寄存器 存放任务状态段表的16位段选择符。,6.调试寄存器,调试寄存器:DR0DR7DR0,DR1,DR2,DR3:用户设置的程序断点地址。DR6:用户调试时的断点状态值。DR7:用户设置的断点控制。DR4,DR5:保留寄存器。测试寄存器:测试命令寄存器:TR6 数据寄存器:TR7,7.测试寄存器,测试寄存器:8个32位寄存器TR0 TR5:为保留寄存器。TR6、TR7:测试寄存器,用来测试转换后备缓冲区TLB。其中,TR6:测试命令寄存器,用于对TLB进行测试。TR7:用于保存测试TLB后的结果。,2.2.4 8

10、0486的内部寄存器组,80486寄存器在80386的基础上增加了以下功能:(1)控制寄存器CR3中新定义了两位,即PCD(D4位)和PWT(D3位)。PCD(page cache enable)页面高速缓存使能位PWT(page write-through)页面透写(2)在控制寄存器CR0中增加了新的页面保护特性。(3)标志寄存器中,增加了新的对界检查特性。(4)增加了三个用于测试片上超高速缓存的新的可测试寄存器TR3、TR4、TR5,增强了TLB的可测试性。,2.3 80X86的引脚信号,区别:8088的外部数据总线8条,分时复用AD7AD0,A15A8专门用来传送地址第28号引脚在808

11、6中是,在8088中改为,定义相反。第34号引脚在8086中是,在8088中改为SS0,2.3.1 8086/8088的引脚信号及功能,最小模式和最大模式的概念(1)最小模式:在系统中只有一个微处理器。(2)最大模式:两个或多个微处理器(主处理器、协处理器)注意点:8086/8088的数据线和地址线复用 8086有16根数据线 第21脚(RESET)为输入复位信号 第22引脚为“准备好”(READY)信号 高4位地址和状态线复用,各引脚信号:GND、V地和电源 AD15AD0地址/数据复用 A19/S6A16/S3地址/状态复用 BHE/S7 高8位数据总线允许/状态复用 NMI非屏蔽中断输入

12、 INTR可屏蔽中断请求信号输入 RD读信号输出 CLK时钟输入 RESET复位信号输入 READY“准备好”信号输入 TEST测试信号输入 MN/MX最小和最大模式控制输入,最小模式 下的引脚,引脚信号:INTA中断响应信号输出 ALE地址锁存允许信号输出 DEN数据允许信号 DT/R数据收发信号输出 M/IO存储器/输入输出控制信号输出 WR写信号输出 HOLD总线保持请求信号输入 HLDA总线保持响应信号输出,最大模式下的引脚,引脚信号:QS1、QS0指令队列状态信号输出 S2#、S1#、S0#总线周期状态信号输出 LOCK#(lock)总线封锁信号输出 RQ#/GT1#、RQ#/GT0

13、#总线请求信号输入、总线授权信号输出,2.3.2 80486引脚信号及功能,1、时钟信号 CLK 2、地址总线(A2A31,BE0#BE3#)3、数据总线(D0D31)4、奇偶校验(DP0DP3,PCHK#5、总线周期的定义信号6、总线控制信号:ADS#、RDY7、成组控制信号:BRDY、BLAST8、高速缓存控制信号:KEN、FLASH9、高速缓存的无效性控制:AHOLD、EADS10、页面高速缓存控制PWT、PCD,11、数据出错报告信号:FERR、IGNNE12、地址位20的屏蔽:AM2013、总线仲裁信号:BREQ、HOLD、HLDA、BOFF14、总线大小控制信号 BS8、BS161

14、5、中断信号 INTR、NMI16、RESET,(1)时钟周期:是CPU的基本时间计量单位,它由计算机主频决定。8086主频是5MHz,一个时钟周期就是200ns。(2)总线周期:BIU完成一次访问存储器操作所需要的时间称作一个总线周期。一个最基本的总线周期由4个时钟周期组成,习惯上称4个状态,即T1,T2,T3,T4状态。只有在CPU和内存或I/O端口之间传递数据以及取指令时,CPU才执行总线周期。,2.4 80X86的系统总线构成2.4.1 8086的时钟和总线周期概念1、几个基本概念,典型的8086总线周期序列:,T1状态,发地址信息T2状态,总线的高4位输出状态信息T3状态,高4位 状

15、态信息,低16位数据。T3之后,可能插入TWT4状态,结束。,(3)空闲周期:如果在一个总线周期之后,不立即执行下一个总线周期,则系统总线就处于空闲状态,此时执行空闲周期Ti。(4)指令周期:就是计算机完成对一条指令的读取并执行这一系列步骤所需要的时间。一个指令周期包含一个或几个总线周期。例如,执行一条8位寄存器乘法(MUL),这是一条两字节指令,大约需7077个时钟周期的执行时间。,2、时钟信号发生器,2.4.2 8086工作模式1、8086在最小模式下的典型配置,2、8086在最大模式下的典型配置,2.4.3 8086的操作和时序,8086的主要操作:系统的复位和启动操作;暂停操作;总线操

16、作;中断操作;最小模式下的总线保持;最大模式下的总线请求/允许。,1.系统的复位和启动操作,复位时各内部寄存器的值,2.总线操作,(1)最小方式下的总线读操作(2)最小方式下的总线写操作(3)最大模式下的总线读操作(4)最大模式下的总线写操作,(1)最小方式下的总线读操作,(2)最小方式下的总线写操作,(3)最大模式下的总线读操作,(4)最大模式下的总线写操作,3.最小模式下的总线保持,利用HOLD和HLDA信号实现总线保持,2.5 80486的工作方式,1.实地址方式(real address mode)2.保护地址方式(protected virtual address mode)3.虚拟

17、地址方式(virtual 8086 mode),2.6 80X86的中断系统,一、课前思考1、什么叫中断、中断类型、中断向量、中断向量表?2、中断工作过程有哪些阶段?3、如何进行中断向量的设置与修改?4、8088的中断处理流程是如何的?二、学习目标1、熟练掌握中断、中断类型、中断向量、中断向量表及中断向量的设置与修改;2、了解8088的中断工作的过程。,三、难重点1、中断类型、中断向量、中断向量表关系;2、中断向量的设置与修改;3、中断工作的过程。四、主要知识点1、中断类型、中断向量、中断向量表;2、中断向量的设置与修改;3、中断工作的过程。,2.6.1 中断的基本概念中断(Interrupt

18、):CPU暂停执行现行程序,转去执行一段特殊程序,以便处理随机到来的事件,处理完毕再返回继续执行被暂停的程序的过程中断服务程序(ISR,Interrupt-Service Routine):处理随机事件的特殊程序,又称为中断处理程序(Interrupt Handler)中断源:引起CPU中断的随机事件,或能发出中断请求的其它来源,称为中断源,2.6.1.1 中断技术的优点中断技术的优点如下:(1)实现并行及分时操作。(2)实现实时处理。(3)故障处理。(4)基本功能调用。,2.6.1.2 中断源内部中断 CPU自身产生的中断。因程序执行过程中的异常情况所引起的,故也称为软件中断或异常。例如,除

19、法出错、溢出、单步、无效指令、中断指令(系统调用/陷阱)等。外部中断 CPU以外部件产生的中断,也称为硬件中断。例如,键盘中断、定时中断、电源故障、存储器出错等。,中断系统应具有的功能(1)实现中断及返回(2)能实现优先权排队(3)高级中断源能中断低级的中断处理,2.6.1.3 中断工作过程 包括中断请求、中断判优、中断响应、中断处理和中断返回五个阶段。(1)中断申请 中断源向CPU请求。(2)中断判优(3)中断响应 CPU对中断源的请求作出反应。(4)中断处理CPU执行中断服务程序,完成对中断事件的处理。(5)中断返回,2.6.1.4 中断优先级(1)软件判优 软件判优是指各中断源的优先级是

20、由软件安排的,和硬件电路关系不大。(2)硬件判优 硬件判优是指利用硬件电路或中断控制芯片对系统中的各中断源的优先级进行安排和管理。,(1)软件判优,中断响应时,CPU进入特定的ISR在ISR中,将中断请求信号通过数据线读入CPU依次测试数据位,若为1,则有中断请求,作相应处理。,软件查询法特点中断优先级由查询顺序确定,先被查询者具有高优先级。需要中断请求信号的的锁存接口。可以通过修改软件改变中断优先级。响应速度慢,服务效率低。,(2)硬件判优,链式判优的基本思想是将所有的中断源构成一个链(菊花链),各中断源在链中的前后顺序是根据中断源优先级的高低来排列的,排在链前面高优先级别的中断会自动封锁低

21、优先级别的中断。,2.6.1 中 断 概 述1、中断的基本概念 计算机在正常执行程序的过程中,由于某事件的发生使CPU暂时停止当前程序的执行,而转去执行相关事件的处理程序,结束后又返回原程序继续执行,这样的一个过程就是中断。中断最初的目的是为了解决高速CPU与低速外设之间的速度矛盾。实际上,中断的功能远远超出了预期的设计,被广泛地应用在分时操作、实时处理、人机交互、多机系统等方面,中断技术大大地提高了CPU的工作效率。,2、中断过程(1)中断源中断源:引起中断的原因或者发出中断请求的设备。中断源一般分为两类:内部中断源和外部中断源。内部中断源即中断源在微处理器内部。如计算溢出、中断指令的执行、

22、程序调试中指令的单步运行等都是内部中断源。外部中断源,即引起中断的原因是处理机的外部设备。如外设的I/O请求、定时时间到、设备故障、电源掉电等都是外部中断源。,(2)中断响应 CPU对内部中断源提出的中断请求必须接受,而对外部中断源提出的中断请求是否响应取决于外中断源类型及响应条件。不同的微机对可屏蔽中断请求有不同的响应条件,8086(88)系统的响应条件为:CPU执行完现行指令;CPU处于开中断状态(即IF=1);无总线请求。CPU响应中断自动完成三项任务:1)关闭中断 2)断点和标志寄存器内容入栈 3)获得中断服务程序的入口地址,转到中断服务程序,(3)中断处理(转到中断服务程序后)CPU

23、响应中断以后,就会中止当前的程序,转去执行一个中断服务子程序,以完成为相应设备的服务。中断处理要做以下六件事情:1)保护现场(由一系列的PUSH指令完成)目的是为了保护那些与主程序中有冲突的寄存器,(如AX,BX,CX等),如果中断服务子程序中所使用的寄存器与主程序中所使用的寄存器等没有冲突的话,这一步骤可以省略。2)开中断(由STI指令实现)目的是能实现中断的嵌套。,3)中断服务4)关中断5)恢复现场(由一系列的POP指令完成)是与保护现场对应的,但要注意数据恢复的次序,以免混乱。6)开中断并返回(使用中断返回指令IRET)。不能使用一般的子程序返回指令RET,因为IRET指令除了能恢复断点

24、地址外,还能恢复中断响应时的标志寄存器的值,而这后一个动作是RET指令不能完成的。,中断源识别 常用的中断源识别方法有:软件查询 CPU中断请求信号线较少,而发出中断申请的设备较多,要设置一个中断查询接口电路,用以锁存中断申请信号并提供给CPU查询。矢量中断 外设提供中断申请信号和中断矢量标志,进一步获得中断服务程序的入口地址(中断矢量)。每个外设事先约定好各自的中断矢量。,中断源识别的软件查询法(a)硬件接口;(b)软件查询流程,4、中断优先级确定 目前采用的解决中断优先级控制的方案有:软件查询。查询前后顺序就给出了设备的优先级,硬件链式优先级排队电路。基本设计思想:将所有的设备连成一条链,

25、靠近CPU的设备优先级最高,越远的设备优先级别越低,则发出中断响应信号,若级别高的设备发出了中断请求,在它接到中断响应信号的同时,封锁其后的较低级设备使得它们的中断请求不能响应,只有等它的中断服务结束以后才开放,允许为低级的设备服务。硬件优先级编码比较电路。,链式中断优先权排队电路:,5、中断嵌套,2.6.2 8086/8088中断系统2.6.2.1 中断类型(1)8086提供两条外部中断请求线,与中断有关的控制线:NMI、INTR、INTA配合中断控制器如Intel8259A可扩展外部中断(2)8086有两类中断软件中断(内部中断)由指令的执行所引起的中断;硬件中断(外部中断)由外部(主要是

26、外设)的请求所引起的中断。,1、硬件中断(外部中断)非屏蔽中断(NMI)通过NMI引脚输入8086CPU,用于处理一些紧急情况,如系统掉电。采用边沿触发方式,高电平有效。2号中断。不受IF影响。可屏蔽中断(INTR)通过INTR引脚输入8086CPU,采用电平触发方式,高电平有效。只有IF=1时CPU才响应此中断。通常用于一般外部设备的中断。,2、软件中断(内部中断)(1)除法错中断类型0中断(2)软中断INT指令(3)溢出中断INTO指令(4)单步执行,2.6.2.2 中断优先级优先权从高到低顺序如下:内部中断(除法错、INT n、INTO)不可屏蔽中断(NMI)可屏蔽中断(INTR)单步中

27、断,2.6.2.3 中断向量和中断向量表基本概念中断向量:ISR的首地址(入口地址)中断向量表:所有中断源的中断向量顺序存储在存储器的连续区域所形成的表中断向量码(号):中断源识别码基本思想以中断向量码为索引,查中断向量表,取得中断向量,8086在内存的前1K字节(地址00000H-003FFH)建立了一个中断向量表,可以容纳256个中断向量(或256个中断类型)每个中断向量占用4个字节。在这四个字节中,包含着这个中断向量(或这种中断类型)的服务程序的入口地址前两个字节为服务程序的IP,后两个字节为服务程序的CS。,其中前5个中断向量(或中断类型)由Intel专用,系统又保留了若干个中断向量,

28、余下的就可以由用户用,可作为外部中断源的向量。外部中断源,只要在第二个中断响应周期,向数据总线送出一个字节的中断类型码,即可以转至相应的中断向量。,8086在取得了类型码后的处理过程是一样的,其顺序为:(1)将类型码乘4,作为中断向量表的指针;(2)把CPU的标志寄存器入栈,保护各个标志位,此操作类似于PUSHF指令;(3)复制追踪标志TF的状态,接着清除IF和TF标志,屏蔽新的INTR中断和单步中断;(4)保存主程序中的断点,即把主程序断点处的IP和CS值推入堆栈保护,先推入CS值,再推入IP值;,(5)从中断向量表中取中断服务程序的入口地址,分别送至CS和IP中,先取CS值;(6)按新地址

29、执行中断服务程序。在中断服务程序中,通常要 保护CPU内部寄存器的值(保护现场)开中断(若允许中断嵌套)。在中断服务程序执行完后,要恢复现状,最后执行中断返回指令IRET,2.6.2.4 中断向量的设置将类型号为N的中断服务程序的入口地址置入中断类型号N所对应的中断向量表中。方法:用指令设置(较少使用)DOS功能调用来设置(建议使用),用指令设置用指令设置中断服务程序的入口地址到中断类型号n所对应的中断向量表中:MOV AX,0;主程序中设置 MOV ES,AX MOV DI,N*4;中断类型号*4 MOV AX,OFFSET INTRAD;送中断子程序的偏移地址到AX CLD STOSW;偏

30、移地址送到4n,4n+1单元 MOV AX,CS STOSW;段地址送到4n+2,4n+3单元 STI;开中断 INTRAD:PUSH AX;中断服务子程序 STI,指令的操作为:对字节(ES):(DI)(AL)DI1,DOS功能调用来设置设置中断向量:把由AL中指定中断类型号的中断向量DS:DX,放置在中断向量表中。预设AL=中断类型号DS:DX=中断服务程序入口AH=25H执行:INT 21H,DOS功能调用来取中断向量取中断向量:把由AL中指定的中断类型号的中断向量,从中断向量表中取到ES:BX中。预设AL=中断类型号AH=35H执行:INT 21H返回:ES:BX=中断服务程序入口,利

31、用DOS功能调用设置中断向量和取中断向量MOV AL,N;取原中断向量MOV AH,35HINT 21HPUSH ES;存原中断向量PUSH BXPUSH DSMOV AX,SEG INTRAD;设置中断向量段地址在DSMOV DS,AXMOV DX,OFFSET INTRADMOV AL,N;中断向量号nMOV AH,25H;设置中断向量INT 21H,POP DSPOP DX;恢复设置中断向量POP DSMOV AL,NMOV AH,25HINT 21HRETINTRAD:;中断服务子程序IRET,主程序中的初始化设置中断向量设置8259A的中断屏蔽寄存器的中断屏蔽位设置CPU中断允许位标

32、志IF(开中断STI),硬件(外设接口)和CPU自动完成1)外设接口向CPU INTR端发中断请求2)当前指令执行完后,CPU发出两个总线周期的中断响应信号INTA给外设接口3)CPU取中断类型号4)CPU自动将当前PSW(FR的值)、CS、IP内容入栈保护5)清除TF、IF,禁止外部中断和单步中断6)从中断向量表中取(4n)地址内容到IP,取(4n+2)地址内容到CS7)转向中断服务子程序。,中断服务子程序1)程序开始通过若干PUSH指令保护中断时的现场。2)若允许中断嵌套,则用STI指令来设置开中断,使中断允许标志IF=1。3)执行中断处理程序。4)用CLI指令来设置关中断,使中断允许标志

33、IF=0,禁止其它中断请求进入。5)向中断命令寄存器送中断结束命令EOI,使当前正在处理的中断请求标志位被清除,否则同级或低级中断的请求仍然会被屏蔽掉。6)恢复现场,通过POP实现。7)用中断返回指令IRET返回主程序,此时堆栈中保存的断点值和标志值分别装入IP、CS和PSW。,例:编写中断处理程序,要求主程序运行时,每10秒在屏幕上显示信息“The clock interrupt is occurring”。可以利用中断类型1CH进行处理,因为系统定时器(中断类型8)的中断处理程序中时钟每中断一次(每秒中断约18.2次)要调用一次INT 1CH。在ROM BIOS中,1CH的处理程序只有一条

34、IRET指令,仅为用户提供一个中断类型号,这样可以利用系统定时器的中断间隔,将用户设计的程序来代替原有的INT 1CH程序。(1)主程序初始化部分,保存当前中断向量表内容,在置新的中断向量。在主程序结束部分恢复保存的1CH向量。,DATA SEGMENT COUNT DW 1 MESS DB The clock interrupt is occurring,0AH,0DH,$DATA ENDSSTACK SEGMENT DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV

35、 DS,AX MOV AX,STACK MOV SS,AX,MOV AL,1CH;得到原中断向量MOV AH,35HINT 21HPUSH ES;存储原中断向量PUSH BXPUSH DSMOV DX,OFFSET RING;获取RING的偏移地址和段地址MOV AX,SEG RINGMOV DS,AX,MOV AL,1CH;设置中断向量MOV AH,25HINT 21HPOP DSIN AL,21H;设置中断屏蔽位AND AL,0FEHOUT 21H,ALSTIMOV DI,65535;延迟DELAY:MOV SI,65535DELAY1:DEC SIJNZ DELAY1DEC DIJNZ

36、DELAY,POP DX;恢复原中断向量POP DSMOV AL,1CHMOV AH,25HINT 21HMOV AX,4C00HINT 21HRING PROC NEAR;中断服务子程序PUSH DSPUSH AXPUSH CXPUSH DX,MOV AX,DATAMOV DS,AXSTIDEC COUNT;10秒计数JNZ EXITMOV DX,OFFSET MESSMOV AH,09H;显示信息INT 21H,MOV COUNT,182;10秒的值EXIT:CLIPOP DXPOP CXPOP AX POP DSIRETRING ENDPCODE ENDS END START,6.2.5

37、 中断处理流程 P150,2.6.2 8086中断系统1、外部中断 由外部中断源对CPU产生的中断请求,根据外部中断源是否受8086/8088 CPU标志寄存器的中断允许标志位(IF)的影响,将中断分为非屏蔽中断和可屏蔽中断两种。对应于这两种中断方式,在8086/8088CPU的外围引脚上有两个中断请求输入引脚NMI和INTR,分别用于非屏蔽中断请求和可屏蔽中断请求信号的输入。,(1)非屏蔽中断 非屏蔽中断不受CPU中断允许标志位IF的影响,一旦有中断请求,CPU必须响应。当外部中断源的中断请求信号加至NMI(Non Maskable Interrupt)引脚时,就产生非屏蔽中断。非屏蔽中断由

38、CPU内部自动提供中断向量码(n=2),以便及时响应。NMI中断可用来处理微机系统的紧急状态。在IBM PC/XT机中,NMI中断用来处理存储器奇偶校验错和I/O通道奇偶校验错等事件。非屏蔽中断的优先权高于可屏蔽中断。,(2)可屏蔽中断 可屏蔽中断受中断允许标志位IF的限制,只有当IF1时,CPU才响应中断;当IF=0时,CPU不会响应外部中断,即中断被屏蔽。当外部中断请求信号加至CPU的INTR引脚上时,即产生可屏蔽中断。在计算机系统中,大多数的外部中断源都属于可屏蔽中断。需要注意的是,在系统复位、某一中断被响应或使用CLI指令后,IF就被置“0”,从而使CPU关闭了对可屏蔽中断的响应。因此

39、,如果需要使CPU再次响应来自于INTR的中断请求,就必须用STI指令开放中断。,2、内部中断 由CPU内部事件及执行软中断指令所产生的中断请求。已定义的内部中断有下面的5个。(1)除法错中断。执行除法指令时,如果除数为“0”或商超过寄存器所能表达的最大值,则无条件产生该中断。该中断向量码为0。(2)单步中断。该中断是在调试程序过程中为单步运行程序而提供的中断。当设定单步操作时,标志寄存器的TF1,这样使CPU执行完一条指令就产生该中断。该中断向量码为1。,(3)断点中断。该中断在调试程序过程中为设置程序断点而提供的中断。执行INT 3指令或设置断点可产生该中断。INT 3指令功能与软件中断相

40、同,但是为了便于与其他指令置换,它被设置为1字节指令。该中断向量码为3。(4)溢出中断。在算术运算程序中,若在算术运算指令后加入一条INTO指令,则INTO指令将测试溢出标志OF。当OF1(运算溢出),该中断发生。它的中断向量码为4。(5)软件中断。执行软件中断指令INTn即产生该中断,n为中断向量码。,4、中断优先权(1)优先权的判决 在IBM-PC机中,当多个中断同时向CPU提出中断申请时,利用可编程中断控制器(PIC)来实现中断优先权的判决。它是80 x86系统中普遍采用的方法,也是目前使用最广泛、最方便的方法。对于可编程中断控制器,将在7.1节中进行详细分析。,(2)中断优先级的次序

41、8086规定的中断优先级的次序是:内部中断(高)非屏蔽中断可屏蔽中断单步中断(低),5、中断向量表(1)中断类型号(中断向量码)在8086/8088的中断系统中,每个中断源都有相应的处理程序,对每个中断都规定有一个中断类型号,共256个(0255)。CPU根据这些类型号结合中断向量表就可以转入相应的中断处理程序,完成相应的中断服务。常用中断类型号的功能如表2-1所示。其中,中断类型号的前5个是8088规定的专用中断;8HFH是八级硬件中断;5H和10H1AH是基本外部设备的输入/输出驱动程序和BIOS中调用的有关程序;1BH和1CH由用户设定;1DH1FH指向三个数据区域。,表2-1 常用中断

42、类型号及其功能,表2-2 DOS操作系统中断调用,(2)中断向量表 当一个中断源提出中断请求后,系统怎么转入相应的处理程序呢?在8086/8088系统中,系统是依靠中断向量表来转到中断源相应的处理程序,从而完成中断服务。中断向量表是中断类型号与相应中断源的中断处理程序入口地址之间的连接表 8086/8088微机系统用内存最低端的1 KB空间作为中断向量表(00000H003FFH,共1 KB),共有256个中断向量码,按序号排列。在微机系统初始化时,利用程序将中断向量写入系统内存的最低端,如下图所示。,中断向量表,从表中,知道了中断类型号,便可计算出相应的中断向量在表中存放的位置,称为中断向量

43、表地址,或称为中断向量指针。从中断向量表地址中取出中断向量,便得到了该中断类型号的中断服务程序入口地址。即 中断类型号4=中断向量指针的低地址 中断类型号4+2=中断向量指针的高地址(中断向量指针的低地址)(IP)(中断向量指针的高地址)(CS)例1:中断类型号为27H,则:中断向量指针的低地址=27H 4=9CH 中断向量指针的高地址=27H 4+2=9EH 即该中断向量存放在0000H:009CH开始的4个连续单元中。,如果这4个单元中的内容如下:0000:009C 2AH 0000:009D 43H 0000:009E 65H 0000:009F 87H则该中断类型号27H的中断向量(中

44、断服务程序入口地址)的逻辑地址是8765H:432AH,即(CS)=8765H,(IP)=432AH;物理地址是8B97AH。,(3)8086中断矢量表的建立(1)绝对地址置入法AT指令指定段基值,用ORG指定偏移地址,用DD伪指令将中断服务程序的首地址装入。如:INT-TBL SEGMENT AT 0ORG n*4DD INT-VCEINT-TBL ENDSMCODE SEGMENT;主程序INT-VCE PROC FAR;中断服务程序IRET,(2)使用串送存指令装入法(3)直接写中断向量表。利用写指令,直接将中断处理程序的首地址写入内存地址为4*n的区域中。程序如下:INTITB:MOV

45、 AX,0 MOV DS,AX;将内存段设置在最低端 MOV SI,0120H;n=48H,4*n=120H MOV AX,OFFSET CLOCK;获取中断处理程序;首地址的段内偏移地址 MOVSI,AX;段内偏移地址写入中断向量表;4*n地址处 MOV AX,SEG CLOCK;获取中断处理程序首;地址之段地址 MOVSI+2,AX;段地址写入中断向量表;4*n+2地址处,(4)利用DOS功能调用。若系统运行在DOS环境下,可利用DOS功能调用设置中断向量表,调用格式为:功能号25HAH 中断向量码AL 中断处理程序首地址之段地址:偏移地址DS:DX 程序如下:MOV AH,25HMOV

46、AL,48HMOV DX,SEGCLOCKMOV DS,DXMOV DX,OFFSET CLOCKINT 21H,2.6.3 80486的中断,1中断和异常80486把许多执行指令过程中产生的错误也纳入了中断处理的范围,这类中断称为异常中断,简称异常。失效:若某条指令在启动之后,真正执行之前被检测到异常,即产生异常中断,而且在中断服务完成后返回该条指令,重新启动并执行完成。陷阱:产生陷阱的指令在执行后才被报告,且其中断服务程序完成后返回到主程序中的下一条指令。INT n中止:异常发生后无法确定造成异常指令的实际位置,中断服务程序往往重新启动操作系统并重建系统表格。,2.7 80X86存储器和I

47、/O组织2.7.1 8086/8088存储器结构,8086CPU有20根地址线,它的直接寻址空间为220=1M字节,这1M字节空间按照00000H-FFFFFH来编址。,1、8086存储器空间与存储器结构,存储器是按字节进行组织的,两个相邻的字节被称为一个“字”。存放的信息若是以字节(8位)为单位的,将在存储器中按顺序排列存放;若存放的数据为一个字(16位)时,则将每一个字的低字节(低8位)存放在低地址中,高字节(高8位)存放在高地址中,并以低地址作为该字的地址。,在组成与8086CPU连接的存储器时,1M字节的存储空间实际上被分成两个512字节的存储体,分别叫高位库和低位库。低位库固定与80

48、86CPU的低位字节数据线D7D0相连,因此又可称它为低字节存储体,该存储体中的每个地址均为偶地址。高位库与8086CPU的高位字节数据线D15D8相连,因此又称它为高字节存储体,该存储体中的每个地址均为奇地址,如下图所示。,(1)8086系统中,1M字节分为2个512K的存储体,一个存储体中的地址都是偶数地址,叫偶体,另一个都是奇数地址,叫做奇体。如图所示。,存储体与总线的连接,(2)访问一个存储体,只需19位地址,剩下一位用来区分访问那个存储体。A0=0为偶存储体,A0=1 为奇存储体。(3)信号:由该信号和A0控制读写那个存储体。,(4)读字节和字,如图所示,读存储器中的字节和字操作示意

49、图,(a)读偶地址中一个字节,(b)读偶地址开始的一个字,(c)读奇地址中一个字节,(d)读奇地址开始的一个字,要访问 两次存储器,2、8088系统中的存储器结构,8088与8086的存储器结构基本相同,区别如下:(1)8088是准16位微处理器,外部数据总线是8位的,所以1MB是单一存储体,不分奇偶体。(2)8088在16位操作时都要两次访问存储器。,3、存储器分段,8086/8088CPU的指令指示器IP和堆栈指示器SP都是16位,故只能直接寻址64KB,为了能寻址1MB存储空间,引入了分段的新概念。在8086/8088系统中,1MB存储空间被分为若干逻辑段,其实际存储器中段的位置如下图所

50、示。每段最多可可包含64KB长的连续存储单元。每个段的起始地址又叫基址,它是一个能被16整除的数,即最后4位为0,基址是用软件设置的。段和段之间可以是连续的、分开的、部分重叠的或完全重叠的,一个程序所有的具体存储空间可以为一个逻辑段,也可以为多个逻辑段。段的基址存放于段寄存器CS、DS、SS和ES中。所以,程序可以从4个段寄存器给出的逻辑段中存取代码和数据。,4、逻辑地址和物理地址,物理地址20位是唯一可识别的字节单元地址,即存储器的实际地址。逻辑地址是程序设计时,根据需要产生的一种地址,它不是真正的单元地址。逻辑地址由段基址和偏移地址两部分组成,它们都是16位无符号数。,段基址和偏移地址,物

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号