第2章 16位和32位微处理器_第1页
第2章 16位和32位微处理器_第2页
第2章 16位和32位微处理器_第3页
第2章 16位和32位微处理器_第4页
第2章 16位和32位微处理器_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章16位和32位微处理器

本章重点:★CPU的编程结构★标志寄存器的含义★

CPU的操作和时序★

CPU的中断分类和中断向量★硬件中断和软件中断的区别,软件中断的特点★

CPU的存储器编址和I/O编址②主频:CPU的时钟频率。主频越高,运算速度越快。微处理器的性能指标:①字长:CPU能同时处理的数据位数,也称为数据宽度。字长越长,计算能力越高,速度越快,但集成度要求也越高,工艺越复杂。8位,16位,32位,64位。寻址空间:1MB2.116位微处理器80862.1.18086的编程结构2.执行部件(executionunit,EU)

从功能上,8086分为两部分,即1.总线接口部件(businterfaceunit,BIU)1.总线接口部件

总线接口部件负责与存储器、I/O端口传送数据,由下列4部分组成:

①4个段地址寄存器(CS、DS、ES、SS)②16位的指令指针寄存器IP(Instruction

Pointer)③20位的地址加法器④6字节的指令队列缓冲器2.执行部件执行部件负责指令的执行,由下列4部分组成:①4个通用寄存器,即AX、BX、CX、DX;②4个专用寄存器,即基数指针寄存器BP(base

pointer)堆栈指针寄存器SP(stack

pointer)源变址寄存器SI(source

index)目的变址寄存器DI(destination

index);③标志寄存器;④

算术逻辑部件

ALU(arithmetic

logic

unit)。

标志寄存器共有16位,其中7位未用,所用的各位含义如下:

1514131211109876543210OFDFIFTFSFZFAFPFCF

根据功能,8086的标志可以分为两类:

1.状态标志

2.控制标志

状态标志有6个,即SF、ZF、PF、CF、AF和OF

①符号标志SF(sign

flag)②零标志ZF(zero

flag)③奇偶标志PF(parity

flag)④进位标志CF(carry

flag)⑤辅助进位标志AF(auxiliary

carry

flag)⑥溢出标志OF(overflow

flag)控制标志有3个,即

①方向标志DF(direction

flag)②中断允许标志IF(interrupt

enableflag)③跟踪标志TF(trap

flag)又称为单步标志

表2.18086CPU

标志位情况名称符号符号标志SF功能与运算结果的最高位相同,当数据用补码表示时,负数的最高位为1,所以符号标志表示运算执行后的结果是正还是负。零标志ZF当前的运算结果为零,ZF为1;否则,ZF为0。奇偶标志PF运算结果所含1的个数为偶数,则PF为1。进位标志CF当执行一个加法运算使最高位产生进位时,或者执行一个减法运算引起最高位产生借位时,此外,循环指令也影响这一标志。辅助

进位标志AF加法运算时,如果第3位往第4位有进位;减法运算时,如果第3位往第4位有借位。辅助进位标志一般在BCD码运算中作为是否进行十进制调整的判断依据。溢出标志OF运算过程中产生溢出时,所谓溢出,是指当字节运算的结果超出了范围128~

+127,或者当字运算的结果超出了范围32768~

~+32767时称为溢出。方向标志DF控制串操作指令用的标志。

DF=0,串操作过程中的地址会不断增值;DF=1,串操作过程中的地址会不断减值。中断标志IF控制可屏蔽中断的标志。IF=0,CPU不能对可屏蔽中断请求作出响应;IF=1,CPU可以接受可屏蔽中断请求。跟踪标志TFCPU按跟踪方式执行指令。例1:执行以下两数的加法操作,判断各标志位的状态。各状态标志位的状态应是:CF=1,PF=1,AF=0,ZF=0,SF=1,OF=0例2:执行以下两数的加法操作,判断各标志位的状态。执行以上加法操作后,各状态标志位的状态应是:CF=0,PF=1,AF=0,ZF=0,SF=1,OF=13.8086的总线周期的概念典型的8086总线周期序列:8086CPU的一个基本总线周期由4个时钟周期(T1~T4)组成。时钟周期T也称为T状态,即T1状态、T2状态、T3状态和T4状态。CPU在每个时钟周期(状态)内完成若干基本操作。T1状态:CPU向20位地址/状态(A19/S6~A16/S3),地址/数据(AD15~AD0)分时复用总线上发送读写存储器或I/O端口的地址。发ALE地址锁存信号发出存储器/IO读写控制信号M/IOT2状态:CPU低16位地址/数据总线(AD15~AD0)切换为数据总线,为读写数据作准备T2状态总线的高4位(A19/S6~A16/S3)上输出本总线周期状态信息S6~S3。这些状态信息用来表示中断允许状态、当前正在使用的段寄存器等。发出数据允许信号DEN发出数据发送接受控制信号DT/RT3状态:CPU在总线的高4位(A19/S6~A16/S3)继续输出总线周期状态信号S6~S3。在总线的低16位(AD15~AD0)地址/数据线上继续发送要写的数据,或者从存储器或I/O端口读入数据采样READY线,若有效(高电平),则进入T4周期,若无效,则说明外设没准备好,插入Tw周期Tw状态:T4状态:在T4开始时钟的下降沿,把数据读入到CPU或写入到选中的地址单元同时其它状态信号线恢复为初始状态,为执行下一个总线周期做准备TW等待状态:如果被选中的存储器或I/O设备不能及时配合CPU传送数据,则必须通知CPU数据“未准备好”,迫使CPU在T3状态后插入等待状态TW

。“未准备好”信号必须在T3前送给CPU。如果在一个总线周期之后,不立即执行下一个总线周期,或者当指令队列是满的,执行部件EU又没有访问总线的要求,这时BIU就处于空闲状态。在空闲状态中,可以包含一个或几个时钟周期。在空闲状态,总线高4位(A19/S6~A16/S3)仍输出与前一总线周期相同的状态信号。如果前一个总线周期是写周期,则CPU在总线低16位(AD15~AD0)上继续驱动数据信息;如果前一个总线周期是读周期,则总线低16位(AD15~AD0)为高阻状态。TI空闲状态:2.1.28086的引脚信号和工作模式

1、8086CPU的两种组态■最小组态(模式)■

MN/MX接+5V■构成小规模的应用系统,只有8086一个微处理器,■所有的总线控制信号均为8086产生,系统中的总线控制逻辑电路,减少到最少。■最大组态(模式)■MN/MX

接地■用于大型(中型)8086/8088系统中,系统总是包含有两个或多个微处理器,其中一个主处理器就是8086或8088,其它的处理器称协处理器,协助主处理器工作。■需要总线控制器来变换和组合控制信号。地址/数据线地址/状态线非屏蔽中断可屏蔽中断请求最小最大模式控制为1,表示最小模式为0,表示最大模式读信号总线保持请求信号总线保持相应信号写信号存储器/IO控制信号为1,表示选中存储器为0,表示选中IO接口数据发送/接收信号DT/R=1,发送DT/R=0,接收数据允许信号地址允许信号中断响应信号测试信号:执行WAIT指令,CPU处于空转等待;

其有效时,结束等待状态。准备好信号:表示内存或I/O设备准备好,可以进行数据传输。复位信号2、8086/8088的引脚信号和功能8086/8088引脚信号注意点:①8086/8088的数据线和地址线复用②8086有16根数据线③第21引脚(RESET)为输入复位信号④第22引脚为“准备好”(READY)信号⑤第23引脚(TEST)在多处理器系统中使用⑥第32引脚(RD)指出当前要执行一个输入操作。最小模式中,第32脚和第28(M/IO)脚一起使用,以区分当前进行的是CPU和内存还是I/O接口之间传输数据。⑦最小模式中,第29引脚和第28引脚一起指出是往内存单元还是I/O接口写数据。⑧高4位地址和状态线复用8086/8088各引脚信号:(1)GND、VCC

地和电源

第1、20脚为地;第40脚为电源,8086/8088均用单一的+5V电压。地址数据复用,输入输出,三态输出。在一个总线周期的第一个时钟周期,AD15~AD0

传送地址信号,在其他的时钟周期,作数据总线使用。(2)AD15~AD0

地址/数据总线(3)A19/S6~A16/S3

地址/状态信号线输出,三态。①

S6为低,表示8086当前与总线相连②

S5=IF。在一个总线周期的T1,输出地址信号的最高4位,在

其他的时钟周期,输出状态信号S6~S3。S4S3意义00110101当前正在使用ES附加段当前正在使用SS堆栈段当前正在使用CS或者未使用任何寄存器当前正在使用DS数据段

A17/S4~A16/S3的组合指出当前使用的段码寄存器情况输出,三态。(4)BHE/S7

高8位数据总线允许/状态复用引脚在总线周期的T1,为BHE信号,表示高8位数据线D15~D8

上的数据有效。在其他的总线周期,为S7状态信号,8086中S7未作定义。BHEA001000011从偶地址开始读写1个字从偶地址单元或端口读写1个字节从奇地址单元或端口读写1个字节从奇地址开始读写1个字(第1个总线周期,低8位数字送AD15~AD8,第2个总线周期,高8位数字送AD7~AD0)操作所用的数据引脚10AD15~AD0AD7~AD0AD15~AD8AD15~AD8AD7~AD0

表2.2

BHE信号和A0的代码组合和对应的操作(5)NMI非屏蔽中断请求信号输入,有效。不受FLAG寄存器中IF的影响,CPU在当前指令结束响应中断。(6)INTR可屏蔽的中断请求信号输入,高电平有效,表示外设向CPU提出中断申请,若FR中IF=1,CPU在当前指令后即响应。输出,三态,低电平有效。(7)RD读信号(8)CLK系统时钟输入信号最大时钟频率为5MHZ,占空比1/3。(9)RESET系统复位信号输入,高电平有效,必须保持至少4个时钟周期CPU中的部分内容标志位清除指令指针(IP)0000HCS寄存器FFFFHDS寄存器0000HSS寄存器0000HES寄存器0000H指令队列空复位重新启动后,第一条指令地址FFFF0H。(10)READY

准备好信号输入,高电平有效。CPU访问存储器或外设时,READY有效,表示存储器或外设已准备好传送数据。(11)TEST

测试信号输入,低电平有效,与WAIT指令配合使用。WAIT指令TEST有效?执行后续指令YesNo(12)MN/MX

最大/最小模式控制信号。3.最小模式最小模式下,第24~31脚的信号含义如下:①INTA

中断响应信号输出低电平有效,是CPU对中断请求信号INTR的响应。在响应过程中,CPU在该引脚连续送出两个负脉冲,可用作外部中断源中断向量码的读选通信号。②ALE

地址锁存允许信号输出三态输出,高电平有效,当它为高电平时,表明CPU地址线上有有效地址。因此,它常作为锁存控制信号将A19~A0锁存到地址锁存器。③DEN

数据允许信号三态输出,该信号有效时,表示数据总线上有有效数据。它在每次访问内存或I/O端口以及在中断响应期间有效。它常用作数据总线驱动器的片选信号。④DT/R

数据收发信号输出三态输出,在使用8286/8287作为数据总线收发器时,其用来控制8286/8287的数据传送方向。高电平时,进行数据发送,低电平时,进行数据接收。DMA方式时,被置为高组态。⑤M/IO

存储器/输入输出控制信号输出三态输出,用来区分当前操作是访问存储器还是访问I/O端口。若此引脚输出为高电平,访问存储器;若输出为低电平,则访问I/O端口。⑥WR

写信号输出低电平有效。该引脚有效,表示CPU当前正在进行存储器或I/O写操作。⑦HOLD

总线保持请求信号输入高电平有效,当某一总线上主控设备要占用系统总线时,通过此引脚向CPU提出请求。⑧HLDA

总线保持响应信号输出高电平有效。这是CPU对HOLD请求的响应信号,当CPU收到有效的HOLD信号后,就会对其做出响应:一方面使CPU的所有三态输出的地址信号、数据信号和相应的控制信号变为高阻状态(浮动状态);同时还输出一个有效的HLDA,表示处理器现在已放弃对总线的控制。当CPU检测到HOLD信号变低后,就立即使HLDA变低,同时恢复对总线的控制。8086在最小模式下的典型配置:硬件连接特点:①MN/MX接+5V②有1片时钟发生器8284A③有3片8282或74LS373,作为地址锁存器。④系统所连存储器和外设较多时,需用2片8286/8287。4.最大模式最大模式下,第24~31脚的信号含义如下:①QS1、QS0

指令队列状态信号输出这两信号组合起来提供了8086内部指令队列的状态,以便外部对其动作进行跟踪。QS1、QS0的代码组合和对应的含义如表2.3所示。表2.3

QS1、QS0的代码组合和对应的含义QS1QS000110101无操作,队列中指令未被取走从指令队列的第一个字节中取走代码队列为空从队列里取出的字节是指令的后续字节含义②S2、S1、S0

总线周期状态信号输出输出,三态。这3个信号连接到总线控制器8288的输入端,8288对它们译码后可以产生系统总线所需要的各种控制信号。三个信号的代码组合以及对应操作见表。表2.4

S2、S1、S0的代码组合和对应的操作010101010000111100110011操作过程发中断响应信号读I/O端口写I/O端口暂停取指令读存储器写存储器无源状态③LOCK

总线封锁信号输出三态输出、低电平有效。当此信号有效时,系统中其他总线主部件不能占有总线。此信号由指令前缀LOCK使其有效,并一直保持到LOCK前缀后面的一条指令执行完毕。另外,在8086的2个中断响应脉冲之间,LOCK信号也自动变为有效电平,以防其他总线主部件在中断响应过程中占有总线,使一个完整的中断响应过程被间断。④RQ/GT1、RQ/GT0

总线请求信号输入、总线授权信号输出双向。这2个信号可供CPU以外的2个处理器用以发出使用总线的请求信号和接收CPU对总线请求信号的应答信号,总线请求信号和允许信号在同一引脚上传输,但方向相反。其中,RQ/GT0比RQ/GT1的优先级要高。8086在最大模式下的典型配置:与最小模式的主要区别:外加有8288总线控制器①最大模式系统中,需要用总线控制器来变换与组合控制信号的原因在于:在最大模式的系统中,一般包含2个或多个处理器,这样就要解决主处理器和协处理器之间的协调工作,和对系统总线的共享控制问题,8288总线控制器就起了这个作用。

②在最大模式的系统中,一般最大模式下的系统典型配置还有中断优先级管理部件。8259A用以对多个中断源进行中断优先级的管理,但如果中断源不多,也可以不用中断优先级管理部件。2.1.38086的操作和时序指令周期、总线周期和时钟周期:指令周期(InstructionCycle):CPU执行一条指令所需要的时间。总线周期(BusCycle):CPU与外部电路之间进行一次数据传送所需的时间。时钟周期(ClockCycle):控制CPU基本操作的时钟,是CPU处理动作的最小时间单位,又称T状态。一个指令周期由一个或若干个总线周期组成,一个总线周期至少包含4个T状态。8086的主要操作:①系统的复位和启动操作;②暂停操作;③总线操作;④中断操作;⑤最小模式下的总线保持;⑥最大模式下的总线请求/允许。1.系统的复位和启动操作

通过RESET引脚上的触发信号来执行。■复位脉冲的有效电平(高)必须超过4个时钟周期(开启电源引起的复位时间大于50µs)。■复位状态,CPU各内部寄存器都被设置为初值。表2.5复位时各内部寄存器的值■复位后地址总线浮空□物理地址为FFFF0+0000H(IP中)

=FFFF0H□一般在FFFF0H中,存放一条段交叉直接JMP指令,转移到系统程序实际开始处。这个程序往往实现系统初始化、引导监控程序或者引导操作系统等功能,这样的程序叫做引导和装配程序。■复位后,第一条指令的地址:8086的复位时序:2.

总线操作

CPU为了要与存储器及I/O端口交换数据,需要执行一个总线周期,这就是总线操作。(1)最小方式下的总线读操作(2)最小方式下的总线写操作

(3)最大模式下的总线读操作(4)最大模式下的总线写操作(1)最小方式下的总线读操作一个最基本的读周期包含有4个状态,即T1、T2、T3、T4,必要时可插入1个或几个TW。★T1状态①

M/IO有效,用来指出本次读周期是存贮器读还是I/O读,它一直保持到T4有效。②地址线信号有效,高4位通过地址/状态线送出,低16位通过地址/数据线送出,用来指出操作对象的地址,即存贮器单元地址或I/O端口地址。③ALE有效,在最小模式的系统配置中我们讲过,地址信号通过地址锁存器8282锁存,ALE即为8282的锁存信号,下降沿有效。④BHE(对8088无用)有效,用来表示高8位数据总线上的信息有效,现在通过A15~A8传送的是有效地址信息,BHE常作为奇地址存贮体的选通信号,因为奇地址存贮体中的信息总是通过高8位数据线来传输,而偶地址体的选通则用A0。⑤当系统中配有总线驱动器时,T1使DT/R变低,用来表示本周期为读周期,并通知总线驱动器接收数据。★T2状态⑥

高四位地址/状态线送出状态信息,S6~S3。⑦

低16位地址/数据线浮空,为下面传送数据准备。⑧BHE/S7引脚成为S7(无定义)。⑨RD有效,表示要对存贮器或I/O端口进行读。⑩DEN有效,使得总线收发器(驱动器)可以传输数据。★T3状态

从存贮器或I/O端口读出的数据送上数据总线(通过A15~A0)。★TW状态若存贮器或外设速度较慢,不能及时送上数据的话,则通过READY线通知CPU,CPU在T3的前沿(即T2结束末的下降沿)检测READY,若发现READY=0,则在T3结束后自动插入1个或几个TW,并在每个TW的前沿处检测READY,等到READY变高后,则自动脱离TW进入T4。★T4状态在T4与T3(或TW)的交界处(下降沿),采集数据,使各控制及状态线进入无效。(2)最小方式下的总线写操作最基本的总线写周期也包括4个状态T1~T4,必要时插入TW。★T2状态基本上同读周期,只有此时DT/R为高不是低。★T1状态与读周期有两点不同:①RD变成WR;②A15~A0不是浮空,而是发出要写入存贮器/I/O端口的数据。

★T3、T4、TW三个状态同读周期。(3)最大模式下的总线读操作◆

与最小模式下的读周期相比,不同的就是读信号考虑加入总线控制器后,它可以由S2、S1、S0

状态信号来产生MRDC和IORC,这两个信号与原RD相比,不仅明确指出了操作对象,而且信号的交流特性也好,所以我们下面就考虑用它们不用RD,若用RD信号的话,则最大模式与最小模式相同。★T1状态基本同最小模式,不同的是ALE、DT/R是由总线控制器发出的。★T2状态不同的是此时RD变成MRDC或IORC,送到存贮器或I/O端口。★T3状态数据已读出送上数据总线,这时S2、S1

、S0

=111进入无源状态。若数据没能及时读出,则同最小模式一样自动插入TW

。★T4状态数据消失,状态信号进入高阻,S2

、S1、S0根据下一个总线周期的类型进行变化。(4)最大模式下的总线写操作◆与上述最大模式下的总线读周期相比,就是MRDC和IORC成为MWTC和IOWC,另外还有一组AMWC或AIOWC(比MWTC和IOWC提前一个T有效),这时MWTC(AMWC)或IOWC(AIOWC)取代最小模式下的WR。★T1状态同读周期。★T2状态

AMWC或AIOWC有效,要写入的数据送上DB,DEN有效。★T3状态

MWTC或IOWC有效,比AMWC等慢一个T,S2

、S1、S0

进入无源状态。若需要的话,自动插入。★T4状态

AMWC等被撤消,S2

、S1

、S0根据下一总线周期的性质变化,DEN失效,从而停止总线收发器的工作,其它引脚高阻。正常的8086总线周期:■

至少由4个时钟周期(T1~T4)组成。■

在T1期间,A19/S6~A16/S3和AD15~AD0分别送出地址

A19~A16、A15~A0,同时送出地址锁存允许信号ALE。■

外部电路利用ALE把这些地址信号锁存到地址锁存器中,即可在锁存器的输出端得到完整的20位地址信号A19~A0。■

在写总线周期中,CPU从T2开始把数据送到总线上并维持至T4。■

在读总线周期中,CPU在T3到T4期间读入总线上的数据。(5)总线空操作只有在CPU与存储器或I/O端口之间传送数据时,CPU才执行相应的总线操作,而当它们之间不传送数据时,则进入总线空闲周期,而总线空闲周期即对应总线空操作。在总线空闲周期内,CPU的各种信号线上的状态维持不变。要注意的是,总线空操作并不意味着CPU不工作,只是总线接口部件BIU不工作,而总线执行部件EU仍在工作,如进行计算、译码、传送数据等。实质上总线空操作期间,是BIU对EU的一种等待。3、中断操作和中断系统(1)8086的中断分类

8086能处理256种不同的中断,对应的中断类型码为0~255。可分为两大类:硬件(外部)中断和软件(内部)中断。其中断分类如右图。■

硬件中断:通过外部硬件产生,也称外部中断。□

非屏蔽中断(类型号为2):通过CPU的NMI引脚进入,不受IF的屏蔽,且在整个系统中只能有一个。□

可屏蔽中断:通过CPU的INTR引脚进入,只有当IF为1时,才能进入,否则,受到禁止。且在整个系统中允许多个。■

软件中断:CPU根据软件中的某条指令或软件对标志寄存器中某个标志的设置而产生。(2)中断向量和中断向量表

中断向量:中断处理子程序的入口地址,每个中断类型对应一个中断向量。中断向量并不是任意存放的。一个中断向量占4个存储单元,其中,前2个单元存放中断处理子程序入口地址的偏移量(IP),低位在前,高位在后,后两个单元存放中断处理子程序入口地址的段地址(CS),同样也是低位在前、高位在后。

中断向量表:将这些中断向量按一定的规律排列成一个表,就是所谓的中断向量表,当中断源发出中断请求时,即可查找该表,找出其中断向量,就可转入相应的中断服务子程序。

中断类型号×4——

可计算某个中断类型的中断向量在整个中断向量表中的位置。如类型号为20H,则中断向量的存放位置为:

20H×4=80H,如果0080H、0081H、0082H、0083H这4个单元的值分别为10H、20H、30H、40H,那该中断处理子程序的入口地址为4030:2010。如类型号17H,中断处理子程序的入口地址为2345:7890由于其中断向量存放位置为0000:005CH处,所以,0段005CH、005DH、005EH、005FH这4个单元的值分别为90H、78H、45H、23H。中断类型码和中断向量所在位置之间的对应关系(3)硬件中断NMI(非屏蔽中断):中断类型号为2,中断处理子程序的入口地址为0段的0008H、0009H、

000AH、000BH。INTR(可屏蔽中断):当IF为1时,响应这个中断。(4)

硬件中断的响应和时序

可屏蔽中断的响应过程:①读取中断类型码②将标志寄存器的值推入堆栈③把标志寄存器的IF和TF清零④将断点保护到堆栈中⑤寻找中断向量,转入中断处理程序

例如:中断类型码为0BH,则此中断对应的中断向量的首字节在0BH×4=2CH处,于是CPU在0段的002CH~002FH处取得中断向量,并将前两字节内容装入IP,后两字节内容装入CS。这样,CPU便转入对中断处理子程序的执行。

INTR信号是一个高电平触发信号,且必须维持到CPU响应中断才结束。

NMI信号是一个上升沿触发信号,且维持两个时钟周期的高电平。

CPU响应NMI和INTR请求的区别:在响应NMI请求时,并不从外部设备读取中断类型码。★

注意:中断响应:①NMI和INTR处理的区别:CPU遇到INTR请求时,必须判断IF值,才能进入中断响应过程,且进入后,CPU要读取此中断类型码,而NMI则不需要这两步。

TF(单步中断标志,专用中断,类型为1

)功能:只执行当前程序的一条指令,然后将各寄存器的内容显示出来,且在每执行一条指令后自动产生类型为1的中断。

在已经进入中断处理子程序后,如果又遇到NMI引脚有非屏蔽中断请求,则CPU仍然能够响应。

中断处理程序结束时,返回断点顺序:先弹出IP和CS,再弹出标志,然后按IP和CS的值返回主程序断点处继续执行原来的程序。⑤某些情况下,即使IF为1,CPU也不能马上响应INTR,而是要等执行完下一条指令后,才能响应中断。一般有下面这些情况:

CPU执行封锁指令时

执行往段寄存器传送数据的指令(即MOV和POP)⑥当遇到等待指令或串操作指令时,允许在指令执行过程中进入中断,但必须在一个基本动作完成之后响应中断。

堆栈区的正确指示:必须先修改SS的值,接着修改SP的值。中断响应的总线周期:

8086中断响应要用两个总线周期。

前一总线周期接收外界中断请求信号,而IF为1,且一条指令执行完毕,那么,CPU会在该总线周期和下一总线周期,从INTA引脚往外设接口各发一个负脉冲。这两个负脉冲从T2一直维持到T4状态开始。

外设接收到第二个负脉冲后,立即将中断类型码送到数据总线的D7~D0,通过AD7~AD0传输给CPU。中断响应时序说明:①中断响应的第一个总线周期用来通知CPU准备响应中断以及准备好中断类型码;第二个总线周期中,CPU接收中断类型码。②外设中断类型码必须通过低8位数据线传递。④两个总线周期之间插入3个空闲状态,也可为2个。⑤软件中断和非屏蔽中断并不按照这种时序来响应。③两个周期中,地址/数据总线、BHE/S7引脚和地址/状态线浮空。M/IO为低电平,ALE在每个总线周期的T1状态输出一个正脉冲。响应一个可屏蔽中断,CPU实际执行的总线时序:第1步:执行2个中断响应总线周期,之间用2至3个空闲状态隔开。第2步:执行1个总线写周期,将标志寄存器值推入堆栈。第3步:将IF和TF置成0,禁止可屏蔽中断和单步中断的出现。第4步:执行1个总线写周期,将CS内容入栈。第5步:执行1个总线写周期,将IP内容入栈。第6步:执行1个总线读周期,读取中断处理子程序入口地址的偏移量送入IP。第7步:执行1个总线读周期,读取中断处理子程序入口地址的段值送入CS。(5)

中断处理子程序

①通过一系列推入堆栈指令来进一步保护中断现场②开放中断,以允许级别较高的中断请求进入③中断处理的具体内容,中断处理子程序的主要部分④弹出堆栈指令,各寄存器恢复进入中断处理时的值⑤中断返回指令,使堆栈中保存的断点值和标志值分别装入IP、CS和标志寄存器(6)软件中断特点:①用一条指令进入中断处理子程序,并且,中断类型码由指令提供。②不执行中断响应总线周期,也不从数据总线读取中断类型码。③不受中断允许标志IF的影响④执行过程中可响应外部硬件中断⑤软件中断没有随机性4.最小模式下的总线保持★利用HOLD和HLDA信号实现总线保持★当系统中除CPU之外的其它总线主模块请求占用总线时产生该操作。5.最大模式下的总线请求/授权★利用RQ/GT实现总线请求/授权★当系统中除CPU之外的其它总线主模块请求占用总线时产生该操作。2.1.48086的存储器编址和I/O编址

1.8086的存储器编址

8086有20条地址总线,直接寻址能力为220=1M字节。用16进制数表示1M字节的地址范围应为00000H~FFFFFH。8086地址总线是20位的,CPU中的寄存器是16位的,20位地址无法用16位寄存器表示,必须分段。段内地址16位,每个段的大小最大可达64KB;实际可以根据需要来确定段大小,可以是1,100,1000,在64K范围内的任意字节数。IBMPC机对段的起始地址有限制, 即段不能从任意地址开始:

必须从任一小段(paragraph)的首地址开始。

小段的概念 从0地址开始每16字节为一小段, 对于16位地址总线,段内存储器小段地址如下:如:0000H,0001H,0002H,……,000EH,000FH一个小段

0010H,0011H,0012H,……,001EH,001FH 0020H,0021H,0022H,……,002EH,002FH ……FFF0H,FFF1H,FFF2H,……,FFFEH,FFFFH

其中:第一列就是每个小段的首地址。每个小段首地址特征:在16进制表示的地址中,最低位为0H(即20位地址的低4位为0000B)。在1M字节的地址空间,共有64K个小段其首地址为:00000H00010H…41230H41240H…FFFE0HFFFF0HCPU访问存储器时,必须先确定所要访问的存储单元的物理地址才能取出(或存入)该单元中的内容。20位物理地址形成:由16位段地址和16位偏移地址组成。

物理地址:

在1M字节存储器里,每个存储单元都有一个唯一的20位地址作为该存储单元的物理地址。段地址:只取段起始地址高16位值。偏移地址:指在段内某内存单元物理地址相对段起始地址的偏移值。

物理地址计算方法:即把段地址左移4位再加上偏移地址值形成物理地址,写成:

物理地址=16d段地址+偏移地址。

*每个存储单元只有唯一的物理地址。

但可由不同的段地址和不同的偏移地址组成。访问存储器类型默认段地址可指定段地址偏移地址物理地址计算取指令码CS无IP(CS)16d+(IP)堆栈操作SS无SP(SS)16d+(SP)BP用作基址寄存器时SSCS,DS,ES有效地址EA(SS)16d+EA一般数据存取DSCS,ES,SS有效地址EA(DS)16d+EA字符串操作源地址DSCS,ES,SSSI(DS)16d+(SI)字符串操作目的地址ES无DI(ES)16d+(DI)8086/8088CPU各种类型访问存储器时,其地址成分的来源见下表所示。存储单元的内容:一个存储单元有效的信息。机器字长是16位,大部分数据以字节为单位表示,一个字存入存储器占有相继的二个单元:低位字节存入低地址,高位字节存入高地址。字单元的地址采用它的低地址来表示。例: 字单元:(0004H)=1234H,

字节单元:(0004H)=34H

同一个地址既可以看作字节单元地址,又可看作字单元地址,需要根据使用情况确定。字单元地址:可以是偶数也可以是奇数,各段在存储器中分配分4种情况讨论:(1)由操作系统负责分配 一般情况,各段在存储器中的分配是由操作系统负责。

每个段可以独立地占用64K存储区。(2)各段也可以允许重叠每个段的大小允许根据实际需要分配,不一定要占64KB。每个存储单元的内容不允许发生冲突。(段可重叠,但使用时防止冲突)。(3)在程序的首部设定各段寄存器的值

如果程序中的四个段都是64K的范围之内,程序运行时所需要的信息都在本程序所定义的段区之内,程序员只要在程序的首部设定各段寄存器的值就可以了。(4)动态地修改段寄存器的内容如果程序的某一段(如数据段)在程序运行过程中会超过64K空间,或者程序中可能访问除本身四个段以外的其他段区的信息,那么在程序中必须动态地修改段寄存器的内容。64KB为一段代码段范围:01000H~10FFFH各段允许重叠:代码段:01000H~01FFFH数据段:02000H~027FFH堆栈段:02800H~028FFH存储器用途固定的几部分:●

00000H~003FFH共1KB内存单元用于存放中断向量。●

B0000H~B0F9FH约4KB是单色显示器的显示缓冲区,存放单色显示器当前屏幕显示字符所对应的ASCII码和属性。●

B8000H~BBF3FH约16KB是彩色显示器的显示缓冲区,存放彩色显示器当前屏幕像素所对应的代码。●

FFFF0H~FFFFFH是存储器底部的16个单元。

系统加电复位时,会自动转到FFFF0H单元执行,

而在FFFF0H处存放一条无条件转移指令,转向系统初始化程序。2.8086的I/O编址

I/O端口的编址

I/O端口编址方式有两种:I/O端口与内存单元统一编址和

I/O端口与内存单元独立编址。

I/O端口与内存单元统一编址

I/O端口和存储单元按照存储单元的编址方法统一编排地址号,I/O端口地址和存储单元地址共同构成一个统一的地址空间。例如,对于一个有16根地址线的微机系统,若采用统一编址方式,其地址空间的结构如下图所示。I/O端口与内存单元统一编址整个地址空间0000HXXXXHFFFFH(XXXX+1)H存储器I/O端口采用统一编址方式下,CPU对I/O端口的输入/输出操作如同对存储单元的读/写操作一样,所有访问内存的指令同样都可用于访问I/O端口,因此无需专门的I/O指令,从而简化了指令系统的设计;同时,对存储器的各种寻址方式也同样适用于对I/O端口的访问,给使用者提供了很大的方便。但由于I/O端口占用了一部分存储器地址空间,因而相对减少了内存的地址可用范围。

I/O端口与内存单元独立编址

在这种编址方式中,建立了两个地址空间,一个为内存地址空间,一个为I/O地址空间。内存地址空间和I/O地址空间是相对独立的,通过控制线M/IO来确定CPU到底要访问内存还是I/O端口。

这种编址要求CPU与I/O端口之间进行数据传输时,使用专用的输入指令INAX,PORT和输出指令OUTPORT,AX。

8086微机系统采用独立编址方式。在8086/8088系统中,共有20根地址线对内存寻址,内存的地址范围是00000H~FFFFFH;用地址总线的低16位对I/O端口寻址,所以I/O端口的地址范围是0000H~FFFFH,如图所示。I/O端口与内存单元独立编址00000HFFFFFH存储器I/OFFFFH0000H采用独立编址方式下,存储器地址与I/O可以重叠,由M/IO信号区别是访问的那个地址。CPU在访问内存和外设时,M/IO信号为1时,表示地址总线上的地址是一个内存地址;为0时,则表示地址总线上的地址是一个I/O端口地址。

补充:Intel8086的寄存器结构1、通用寄存器通用寄存器包括:

数据寄存器、地址指针寄存器、变址寄存器。

数据寄存器包括:AX、BX、CX、DX

。地址指针寄存器包括:SP、BP

。变址寄存器包括:SI、DI

。2、段寄存器

段寄存器包括:CS、SS、DS、ES

。3、控制寄存器

控制寄存器包括:IP、PSW。1、通用寄存器(1)数据寄存器

AX(累加器)、BX、CX、DX

作为通用寄存器。

用来暂存计算过程中所用到的操作数,结果或其它信息。

访问形式:

可以用字(16位)的形式访问;

也可以用字节(8位)形式访问,

它们的高8位记作:AH、BH、CH、DH

。 它们的低8位记作:AL、BL、CL、DL

。CX——Count可以作计数寄存器使用。 在循环LOOP指令和串处理指令中用作隐含计数器。 例: MOVCX,200HAGAIN: …… ……

LOOPAGAIN

;(CX)-1(CX),结果0转AGAINDX——Data可以作为数据寄存器使用。 一般在双字长乘除法运算时,把DX和AX组合在一起存放一个双字长(32位)数,DX用来存放高16位;

对某些I/O操作DX可用来存放I/O的端口地址(端口地址256)。 例: MUL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论