ImageVerifierCode 换一换
格式:PPT , 页数:119 ,大小:1.06MB ,
资源ID:9123997      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-9123997.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(My微机原理1.2~2.2(8086处理器).ppt)为本站会员(hwpkd79526)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

My微机原理1.2~2.2(8086处理器).ppt

1、2019/7/24,1/118,微机原理及应用,孙健I,2019/7/24,2/118,课 程 内 容,微处理器:CPU的编程结构、内部组成及外部功能特性,CPU的操作和时序。 指令系统:寻址方式(涉及存储器的组织和管理)及80x86指令系统。 汇编语言程序设计:汇编语言程序格式,汇编语言的基本语法,BIOS与DOS功能调用,汇编语言程序的上机调试。 存储器及其接口:存储器结构,工作原理,存储器与CPU的连接,存储空间的扩展 ;高速缓存(Cache),。 输入与输出:程序控制方式,中断及中断控制器,DMA方式及DMA控制器。 可编程I/O接口电路:串行接口,并行接口,定时器/计数器,A/D、D

2、/A等。 总线及常见总线标准( ISA, EISA, PCI, USB等)。 80x86/Pentium 保护模式的软件体系结构 高性能微处理器的先进技术及典型结构 MIPS/ARM/80x86/Pentium,2019/7/24,3/118,1.3 计算机的工作原理,1. 微处理器与系统结构(模型机) 2. 通用CPU指令执行过程,2019/7/24,4/118,微处理器与系统结构,1 微处理器的基本结构 算术逻辑单元 ALU 控制与定时部件控制器 片内总线 寄存器阵列,2019/7/24,5/118,2019/7/24,6/118,1.1 算术逻辑单元ALU,ALU对二进制进行算术运算和逻

3、辑运算的部件,这些运算包括: 算术运算:加、减、乘除可以通过多次的加减和移位来实现,因此如果一个微处理器实现了基本的加减和移位操作,乘除就可以通过软件编程实现,当然为了提高运算速度,现在微处理器通常都用硬件实现乘除。数有定点和浮点之分,浮点运算也可以由硬件和软件实现;还有一类运算是关于10进制数的(BCD) 逻辑运算:求补、非、与、或、异或、移位具体的运算规则在介绍指令时候会详细说明,2019/7/24,7/118,ALU的基本组成,核心部件ALU用于完成算术运算和逻辑运算。X、Y是ALU的输入寄存器,Z是ALU的输出寄存器。F用于存放运算结果的状态,例如,结果是否为零,是正还是负,有无进位,

4、是否溢出,等等。 微处理器的字长通常是由ALU和寄存器的位数决定的,如8086的字长是16, 80386的字长是32,2019/7/24,8/118,1.2控制与定时部件控制器,控制器是整个计算机系统的指挥部件。它的任务是从内存中取出指令加以分析,然后发出控制信号执行某种操作 控制器通常由 指令寄存器IR 程序计数器PC 指令译码器ID 控制电路 时序发生器等几部分组成。,控制器的基本组成,2019/7/24,9/118,1.指令部件 程序计数器PC 指令寄存器IR 指令译码器ID 2时序部件 时钟系统(脉冲源和起停逻辑) 时序发生器 3微操作控制部件 组合逻辑控制 微程序控制,2019/7/

5、24,10/118,IR用于存放正在执行或即将执行的指令; PC用于存放下一条指令的存储单元地址,它具有自动增量计数的功能; ID用于对IR中的指令进行译码,以确定IR中存放的是哪一条指令;控制电路负责产生时序脉冲信号,并在时序脉冲的同步下对有关的部件发出操作控制命令,以控制各个部件的动作。,2019/7/24,11/118,2 时序部件,时钟系统(脉冲源和起停逻辑)脉冲源产生的脉冲信号是CPU工作时的时序驱动。两个相邻脉冲前沿的时间间隔为一个时钟周期,或称T状态。早期的CPU的内部运行速度和外接脉冲频率基本相当,现代CPU内部增加了倍频电路,可以工作在数倍于外接时钟频率下工作 时序发生器一条

6、汇编指令总是分解为若干基本动作,或者说是伪操作,每个基本动作,例如指令从数据总线进入指令寄存器,ALU运算结果送到累加器,等等。这些动作实际上就是开启和关闭某些内部数据通路上的开关,信号形式表现为一定宽度的脉冲。这些脉冲信号由时序发生器(脉冲、节拍分配器)产生,在控制部件作用下送到相应的位置。,2019/7/24,12/118,1.3 控制单元(举例),控制单元的两种实现方法(组合逻辑和微程序控制): RISC处理器和Pentium 的大多数简单指令都是以所谓“硬连线”(hard wired)逻辑来实现的,即指令通过“指令译码器”译码后直接产生相应的控制信号来控制指令的执行,从而获得较快的指令

7、执行速度。,2019/7/24,13/118,而对于那些复杂指令的执行则是以“微程序”(microprogramm-ing)方式实现的。按照微程序实现方式,是将指令的操作变成相应的一组微指令序列(即微程序)并预先存放在一个只读存储器(Microcode ROM)中,当指令执行时,按安排好的顺序从只读存储器中一条一条读出这些微指令,从而产生相应的操作控制信号去控制指令的执行。8086是这种方式。,2019/7/24,14/118,1.4 寄存器阵列,1 存放待处理数据的寄存器 累加器accumulator 通用寄存器组 2 存放地址码的寄存器 程序计数器PC 堆栈指针SP(Stack Point

8、er) 3 存放控制信息的寄存器 指令相关的几个寄存器见前面控制器部分 标志寄存器FR(Flag Register) SF、ZF、OF、CF、PF、AF、TF、IF、DF 4 数据缓冲和地址缓冲寄存器 存储器地址寄存器MAR 存储器数据寄存器MDR,2019/7/24,15/118,从存储系统获得指令,决定指令动作和大小,定位并获得操作数,ALU操作,存储结果,以备后用,确定下一条指令,2 通用CPU指令执行过程,2019/7/24,16/118,指令集结构 Instruction Set Architecture (ISA),程序员真正可见的部分,作为软硬件的接口(Interface)或边界

9、(Boudary) “. the attributes of a computing system as seen by the programmer, i.e. the conceptual structure and functional behavior, as distinct from the organization of the data flows and controls the logic design, and the physical implementation.” Amdahl, Blaaw, and Brooks, 1964.,2019/7/24,17/118,I

10、SA主要关注:可编程存储器的组织 Organization of programmable storage (memory & registers): 可寻址内存大小和寄存器数目Includes the amount of addressable memory and number of available registers. 数据类型和数据结构:编码和表达Data Types & Data Structures: Encodings & representations. 指令集:具体操作 Instruction Set: What operations are specified. 指令格

11、式与编码Instruction formats and encoding. 寻址模式与数据/指令访问方式Modes of addressing and accessing data items and instructions,2019/7/24,18/118,指令通常应提供的信息:(1) 做什么操作-操作码:操作的性质和功能(2) 操作数从哪里来-操作数的地址(3) 操作结果放在哪里-操作结果的地址(4) 对于调用和转移指令,还要涉及转移或调用地址的提供方式-下一条指令的地址,2019/7/24,19/118,指令的一般格式地址数目:05,2019/7/24,20/118,举例,x86 AD

12、D AX,3BX; AX (BX+3) mcu 51 ADD A,R1; AA+(Ri) ARM ADD R0,R1,R2; R0R1R2 MIPSadd $s0, $s1, $s2; s0s1+s2,2019/7/24,21/118,编程层次,高级语言编程 High Level Language Program,汇编语言编程 Assembly Language Program,机器语言编程 Machine Language Program,控制信号 Control Signal Specification,编译器 Compiler,汇编器 Assembler,机器解释(ID), ,微程序 M

13、icroprogram,Software,Hardware,2019/7/24,22/118,举例,C语言汇编语言机器语言,Int abc=15; abc+;,mov si,15; inc si;,13E9:0100 BE1500 MOV SI,0015 13E9:0103 46 INC SI,2019/7/24,23/118,时钟系统(脉冲源和起停逻辑)脉冲源产生的脉冲信号是CPU工作时的时序驱动。两个相邻脉冲前沿的时间间隔为一个时钟周期,或称T状态。早期的CPU的内部运行速度和外接脉冲频率基本相当,现代CPU内部增加了倍频电路,可以工作在数倍于外接时钟频率下工作,2019/7/24,24/

14、118,指令周期、总线周期和时钟周期,35个时钟周期组成一个机器周期(machine cycle),一个机器周期完成一个基本动作,如存储器读、存储器写、IO读、IO写等。 一条指令通常需要15个机器周期,例如一条指令add A,a,从取指到完成,需要经过 “取指令”、“取操作数”、“加法运算”、“保存结果到寄存器A”几个机器周期。,2019/7/24,25/118,指令及程序的执行过程(细节),计算机执行程序的过程: (1) 控制器把PC中的指令地址送往存储器地址寄存器MAR,并发出读命令“M读”。存储器按给定的地址读出送到数据总线,CPU接收它,并保存在指令寄存器IR中。取指过程中,PC自动

15、增加并指向下条指令,(2) 指令译码器ID对指令寄存器IR中的指令进行译码,分析指令的操作性质,并由控制电路向存储器、运算器等有关部件发出指令所需要的微命令。,2019/7/24,26/118,(3) 当需要由存储器向运算器提供数据时,控制器根据指令的地址部分,形成数据所在的存储单元地址,并送往存储器地址寄存器MAR,然后向存储器发出读命令“M读”,从存储器中读出的数据经由数据总线送往运算器。,2019/7/24,27/118,(4) 当需要由运算器向存储器写入数据时,控制器根据指令的地址部分,形成数据所在的存储单元地址,并经过地址总线送往存储器地址寄存器MAR,再将欲写的数据经过数据总线存入

16、存储器数据寄存器MDR,最后向存储器发出写命令“M写”,MDR中的数据即被写入由MAR指示地址的存储单元中。,2019/7/24,28/118,(5) 一条指令执行完毕后,控制器就要接着执行下一条指令。为了把下一条指令从存储器中取出,通常控制器把PC的内容加上一个数值,形成下一条指令的地址,但在遇到“转移”指令时,控制器则把“转移地址”送入PC。 控制器不断重复上述过程的(1)到(5),每重复一次,就执行了一条指令,直到整个程序执行完毕。,2019/7/24,29/118,下面,以P5由几条指令组成的程序段为例,简述指令及程序的执行过程。假设程序及数据已经装入了存储器,第一条指令的地址已经装入

17、了PC寄存器。Mov A,a Add A,b Mov s,A hlt,2019/7/24,30/118,(1) 取指令“Mov A,a”并执行,取指令 该指令经译码后,识别出是从存储器读取数据并写到累加器A的指令就自动启动下一次总线操作以实现该指令的功能:控制器把指令中a的地址送地址总线,同时发出读存储器命令;存储器收到该命今后,就读出相应地址单元的内容送到数据总线;CPU从数据总线接收该数据,再送到累加器A,就完成了第一条指令的操作。,2019/7/24,31/118,取指今操作和读擦据操作对存储器来说,没有有什么差别但对CPU来说,它们是完全不同的操作:取指令取出的是能指示计算机工作的”指

18、令”,它要被送到IR去解释执行;而数据操作,取出的只是操作对象而已,这种差别CPU的控制器完全清楚,并能控制它到达该去的地方,这是由指令译码和操作控制器生成有效命今控制的结果;,2019/7/24,32/118,(2) 取指令“Add A,b”并执行,与前面一样,把PC指示的指令(第二条指令)取出来送到IR,自动指向再下一条指令。 指令译码阶段控制器知道它是一条加法指令,且一个加数在A内,一个加数在存储器内,它自动生成相应命令完成该指令的操作:首先它把指令中b的地址送地址总线,并发出读存储器命令;存储器接到该命令,就把操作数b送到数据总线;CPU接收该数据并把它暂存在TLMP寄存器;其次,CP

19、U把A和TLMP的内容在运算器中相加,并把“和”送到累加器A,同时改变状态寄存器的标志如CF,NF,OF,ZF,AF,PF等(这些标志后面详细介绍),2019/7/24,33/118,(3) 取指令“Mov s,A”并执行,第三条指令的取指今,译码与前面类似,执行过程中,把A的内容写到s单元:CPU把 s 的内容送地址总线,把A的内容送到数据总线,并发出“存储器写”命令,存储器接收到该命令后,就把数据总线上的数据写到相应地址单元去。,2019/7/24,34/118,(4) 取指令“hlt”并执行,表示程序到此结束,以免程序继续向下执行,把不是指令的其他数据也当作指令执行,这将会造成系统的错误

20、动作,产生难于预料的结果程序运行的结果是否正确?可以通过输出设备检查和验证,如果不正确需要用查错等系统工具,如Debug等,来检查。,2019/7/24,35/118,从上面的例子,可以看出计算机是怎样一步步完成指令规定的工作的。编制好的程序和计算中用到的数据存放在内存储器中,计算机可以在无人干预的情况下自动完成逐条取出指令和执行指令的任务:这就是所谓的“存储程序”的概念。,2019/7/24,36/118,第二节 Intel 8086 微处理器,2.1 8086的寄存器结构 2.2 8086的功能结构 2.3 8086的存储器组织及堆栈 2.4 8086的引脚功能 2.5 8086的系统配置

21、 2.6 8086的总线周期,2019/7/24,37/118,8086的功能结构,数据总线:DB16bit(8086)/ 8bit(8088) 地址总线:AB20bit 内存寻址能力2201MB 指令寄存器字节数:6(8086)/4(8088),2019/7/24,38/118,2.1 8086的寄存器结构,8088/8086有14个16位寄存器 1. 通用寄存器组 2. 指针/变址寄存器 3. 2个控制寄存器 4. 4个段寄存器绿色部分是80386之后 Intel处理器扩展和增加的寄存器,2019/7/24,39/118,通用寄存器,指针寄存器,变址寄存器,段寄存器,控制寄存器,8086的

22、寄存器结构,2019/7/24,40/118,通用寄存器及隐含用法,1. 通用寄存器组 16位数据寄存器(AX,BX,CX,DX) 可作为8位寄存器使用(例:AH,AL) 每个寄存器的特殊用途: 当AX用于乘法、除法及一些调整指令时,具有专门的用途。 用BX存放访问存储单元的偏移地址 CX用于多种指令的计数值。包括重复的串操作指(REP/REPE/REPNE)、移位指令、循环移位指令和LOOP/LOOPD指令。移位和循环移位指令用CL计数,重复的串操作指令、 LOOP/LOOPD指令用CX计数。 DX用于保存双字乘法运算产生的部分积,或双字除法运算之前的部分被除数,以及双字除法运算之后的余数。

23、用于端口寻址,2019/7/24,41/118,通用寄存器用法,在80386及更高型号的微处理器中,EAX、ECX、EDX寄存器也可以用来存放访问存储单元的偏移地址。,2019/7/24,42/118,2. 指针及变址寄存器(SP,BP,SI,DI) SP(Stack Pointer,堆栈指针):表示当前堆栈栈顶的地址的偏移量。在存储器寻址中,凡涉及到SP寄存器则使用SS作为段寄存器。 BP(Base Pointer,基址指针):用来存放访问堆栈段的一个数据区的“基地址”。在存储器寻址中,凡涉及到BP寄存器也使用SS作为段寄存器。 SI(Source Index,源变址):用于寻址串操作指令的

24、源数据串。在串操作时,DI缺省使用的段寄存器是DS。 DI(Destination Index,目的变址):用于寻址串操作指令的目的数据串,在串操作时,DI缺省使用的段寄存器是ES。 SI和DI也可以在所有16位算术逻辑运算中作为操作数使用;也可以对数据段进行寻址,对应的段寄存器是DS,2019/7/24,43/118,指针及变址寄存器用法,BP,SP寄存器称为指针寄存器,与SS联用。 DI,SI寄存器称为变址寄存器,与DS联用;在串指令中,SI,DI均为隐含寻址,此时,SI与DS联用, DI与ES联用。,2019/7/24,44/118,3. 段寄存器(示意),8086/8088按信息存储的

25、不同性质分为四类,分别由四个段寄存器存放该段的首地址,或称为段地址。用于与微处理器中的其他寄存器联合生成存储器地址。 CS(代码段寄存器)指向当前的代码段,指令由此段取出; SS (堆栈段寄存器)指向当前的堆栈段,栈操作的对象是该段存储单元的内容; DS(数据段寄存器)指向当前的数据段,该段中存放程序的操作数; ES (附加段寄存器)指向当前的附加段,主要用于字符串数据的存放,也可以用于一般数据的存放。 FS(80386) GS(80386),2019/7/24,45/118,4. 指令指针和状态寄存器(1)指令指针IP 是一个16位的专用寄存器。当BIU从内存中取出一条指令,自动修改IP,始

26、终指向下一条将要执行的指令在现行代码段中的偏移量。 8086/8088中的某些指令执行后会改变IP的内容,但用户不能编写指令直接改变IP 的内容。IP是指令地址在代码段内的偏移量(又称偏移地址),IP要与CS配合构成物理地址。,2019/7/24,46/118,(2) 状态(标志)寄存器PSW PSW 是一个16位的专用寄存器,8086只定义了其中的9位(6位状态位,3位控制位)存放运算结果的特征。,2019/7/24,47/118,状态标志位CF、PF、AF、ZF、SF和OF反映微处理器的工作状态,如执行加法运算时是否产生进位,执行减法运算时是否产生借位,运算结果是否为零等; 控制标志位TF

27、、IF和DF对微处理器的运行起特定的控制作用,如以单步方式运行还是以连续方式运行,在程序执行过程中是否允许响应外部中断请求等。,2019/7/24,48/118,六个状态标志的功能简述如下: (1) 进位标志CF(Carry Flag): 当执行算术运算指令时,其结果的最高位有进位或借位时将CF置1;否则将CF置0。 (2) 奇偶标志PF(Parity Flag): 该标志位反映操作结果低8位中“1”的个数情况,若为偶数个“1”,则将PF置“1”;若为奇数个“1”,则将PF置“0”。它是早期Intel微处理器在数据通信环境中校验数据的一种手段。今天,奇偶校验通常由数据存储和通信设备完成,而不是

28、由微处理器完成。所以,这个标志位在现代程序设计中很少使用。,2019/7/24,49/118,(3) 辅助进位标志AF(Auxiliary carry Flag):辅助进位标志也称“半进位”标志。AF1,表示本次运算的低4位中的最高位有进位(加法运算时)或有借位(减法运算时)。AF一般用于BCD运算中是否进行十进制调整的依据。十进制调整指令DAA和DAS测试这个标志位。 (4) 零标志ZF(Zero Flag):反映运算结果是否为零。若结果为零,则ZF1;若结果不为零,则ZF0。,2019/7/24,50/118,(5) 符号标志SF(Sign Flag):反映带符号数(以二进制补码表示)运算

29、结果符号位的情况。若结果为负数,则SF1;若结果为正数,则SF0。SF的取值总是与运算结果的最高位(字节操作为D7,字操作为D15,双字操作为D31)取值一致。 (6) 溢出标志OF(Overflow Flag):反映有符号数运算结果是否发生溢出。若发生溢出,则OF1;否则,OF0。所谓溢出,是指运算结果超出了计算装置所能表示的数值范围。例如,对于字节运算,数值表示范围为-128+127;对于字运算,数值表示范围为-32768+32767。若超过上述范围,则发生了溢出。溢出是一种差错,系统应做相应的处理。,2019/7/24,51/118,(1) 方向标志DF(Direction Flag):

30、用来控制串操作指令的执行。若DF0,则串操作指令的地址自动增量修改,串数据的传送过程是从低地址到高地址的方向进行;若DF1,则串操作指令的地址自动减量修改,串数据的传送过程是从高地址到低地址的方向进行。可以设置DF的指令为STD(置1)和CLD(清0)。 (2) 中断标志IF(Interrupt Flag):用来控制对可屏蔽中断的响应。若IF1,则允许CPU响应可屏蔽中断请求;若IF0,则CPU不能对可屏蔽中断请求作出响应。可以设置IF的指令有STI(置1)和CLI(置0)。IF对非屏蔽中断和内部中断不起作用 (3) 陷阱标志TF(Trap Flag):陷阱标志也称单步标志。当TF1时,微处理

31、器就进入单步工作方式,每执行完一条指令便自动产生一个内部中断(称为单步中断),转去执行一个中断服务程序,可以借助中断服务程序来检查每条指令的执行情况;若TF0,则CPU正常(连续)执行指令。单步工作方式常用于程序的调试。,2019/7/24,52/118,2.2 8086的功能结构,数据总线:DB16bit(8086)/ 8bit(8088) 地址总线:AB20bit 内存寻址能力2201MB 指令寄存器字节数:6(8086)/4(8088),2019/7/24,53/118,总线接口部件BIU(Bus Interface Unit),组成:16位段寄存器,指令指针,20位地址加法器,总线控制

32、逻辑,6字节指令队列。 作用:负责从内存指定单元中取出指令,送入指令流队列中排队;取出指令所需的操作数送EU单元去执行。 工作过程:由段寄存器与IP形成20位物理地址送地址总线,由总线控制电路发出存储器“读”信号,按给定的地址从存储器中取出指令,送到指令队列中等待执行。 当指令队列有2个或2个以上的字节空余时,BIU自动将指令取到指令队列中。若遇到转移指令等,则将指令队列清空,BIU重新取新地址中的指令代码,送入指令队列。 指令指针IP由BIU自动修改,IP总是指向下一条将要执行指令的地址。,2019/7/24,54/118,指令执行部件EU(Exection Unit),组成:通用寄存器,标

33、志寄存器,ALU,EU控制系统等。 作用:负责指令的执行,完成指令的操作。 工作过程:从队列中取得指令,进行译码,根据指令要求向EU内部各部件发出控制命令,完成执行指令的功能。若执行指令需要访问存储器或I/O端口,则EU将操作数的偏移地址送给BIU,由BIU取得操作数送给EU。,2019/7/24,55/118,流水操作,减少了CPU为取指令而等待的时间,可以使得BIU和EU并行工作,提高了CPU的运行速度。,无流水,流水操作,2019/7/24,56/118,EU与BIU间流水线操作过程,复位时指令队列清空,退出复位后BIU开始取指,并从队列尾部(标号6)填入 EU从指令队列头部(标号1)取

34、指执行。若执行中要访M或I/O,则向BIU发总线请求,由BIU完成总线访问 EU在执行分支指令时,自动清指令队列,BIU按转移地址从Mem中取新指令填入 一旦指令队列出现2个字节的空位时,BIU自动取2个字节的指令填入指令队列 当指令队列满,而EU又无总线请求时,BIU进入空闲态(idle),2019/7/24,57/118,几点说明,当EU执行分支指令时,EU须等BIU取回新指令后才能继续执行,此等待期间EU和BIU并未同时工作 EU与BIU非同步工作 8086流水线有两级:取指和执行。新一代的微处理有多级 流水线技术是提高MPU执行指令速度的重要方法,2019/7/24,58/118,80

35、86引脚图,40DIP(双列直插封装)器件 设计了最大/小两种工作模式,由引脚MN/*MX确定 引脚24-31(8根)在两种模式中有不同定义,其余为两种共有 部分AB和DB分时复用,2019/7/24,59/118,2.4 8086的存储器组织与堆栈,1.数据的存储格式 8086有20条地址线,可以寻址1M个存储单元,这1M个存储单元逻辑上可组织成一个线选矩阵,地址从00000FFFFFH,每个单元可以存放一个字节。 任何二个相邻字节单元可以组成一个字,一个字中的每一个字节都有各自的字节地址。低位字节在低地址,高位字节在高地址的次序存放(“低对低”、“高对高”,无论一般存储空间还是堆栈都满足这

36、个要求),字单元的地址以低位地址表示。 如果存放一个字符串,那么字符串的第一个字节存放在低地址单元中,以后依次存放 对于双字(例如中断向量、远程序地址),通常低字是偏移量、高字是段地址,存放时低字放在低地址,高字放在下一个较高的地址上。,2019/7/24,60/118,地 址,字单元0002h=1256h,双字单元 0002H=5A341256H,字节单元0002h=56h,内容,字节、字、双字存放示意,2019/7/24,61/118,2 存储器的分段管理,矛盾:存储器地址空间1MB,20bit地址线;内部各寄存器和数据总线均为16bit。 解决方法:将整个存储器分为若干个逻辑段,用一个1

37、6位的寄存器表示某段在1M空间内的起始地址(段地址),用另一个16位寄存器表示表示段内某单元相对本段起始地址的偏移地址。(用两个16位寄存器形成20位地址),这样每段最多地址空间64KB。 地址的表示方法(逻辑地址):段(基)地址:偏移地址。 “段基值”由段寄存器CS、DS、SS、ES提供;“偏移量”由BX、BP、SP、SI、DI、IP或以这些寄存器的组合形式来提供。,2019/7/24,62/118,8086/8088物理地址的形成,物理地址段地址乘以16(左移4位) 偏移地址,2019/7/24,63/118,2019/7/24,64/118,对给定的任一存储单元,有两部分逻辑地址: 段基

38、址(段地址)由CS,DS,SS,ES决定 段内偏移量(段内有效地址)(该单元相对于段基址的距离)已知逻辑地址,求物理地址 如 205AH:3B06H 段基地址 2 0 5 A 0 H 段内有效地址 + 3 B 0 6 H物理地址(20bit) 2 4 0 A 6 H可见,段基址只能是被16整除的数,也就是说段是以节(paragraph)为边界的,2019/7/24,65/118,一个物理地址对应多个逻辑地址,一个存储单元的物理地址是唯一的,但逻辑地址并不是唯一的 例如0020:0013H0021:0003H 两个逻辑单元对应同一个物理地址00213H,.,.,2019/7/24,66/118,

39、允许各逻辑段在整个存储空间浮动,段与段之间可以是连续的,也可以是分开的或重叠的。,2019/7/24,67/118,段寄存器的使用,在对内存单元寻址时,并不显示表示所使用的段寄存器,也就是说在编程上对段寄存器的使用是隐式的,下面是段寄存器的缺省用法。当然可以使用段跨越显式使用段寄存器。,2019/7/24,68/118,另外的分段方法,其实,还有其他方法也可以将1M字节单元的物理存储器空间分成可用16位地址码寻址的逻辑段。 例如将20位物理地址分成两部分: 高4位为段号,可用机器内设置的4位长的“段号寄存器”来保存,低16位为段内地址,也称“偏移地址”,如下图所示:这种分段方法有其不足之处:

40、(1) 4位长的“段号寄存器”与其他寄存器不兼容,操作上会增添麻烦。 (2) 每个逻辑段大小固定为64K字节单元,当程序中所需的存储空间不是64K字节单元的倍数时,就会浪费存储空间。,2019/7/24,69/118,2 8086存储器的分体结构 8位机(MCS-51、8088)的存储器地址空间和数据存储格式以字节(8bit)为单位组织存储器地址空间,访问一次存储器,获得一个字节的数据。 而8086CPU的数据总线为16位,CPU除了可以对一个字节寻址外,还必须能进行一个字的读写。即:如何组织数据存储格式,使CPU访问一次存储器获得一个字的数据。,8086是通过BHE和A0两根信号线来控制字节

41、还是字访问。,2019/7/24,70/118,说明,接口设计方面: (1)将1M的存储空间分成两个存储体:偶地址和奇地址存储体 (2)将数据总线的低8位与偶地址存储体数据线相连,数据总线的高8位与奇地址存储体数据线相连。 (3)用地址线A0和BHE信号选择存储体 (4)两个体内地址均由A19-A1确定,2019/7/24,71/118,8086存储器的分体结构,2019/7/24,72/118,说明,编程方面 访问字节时,根据地址的奇和偶,由下面的表格就可以知道BHE#和A0的值; 访问一个整字(16位)时,如果则该字的地址为偶地址(规则字),那么一个总线周期就可以完成。如果则该字的地址为奇

42、地址,则8086要用两个连续的总线周期访问一个整字,每个周期访问一个字节。,2019/7/24,73/118,2. 32位/64位存储器接口结构,对于CPU的外部总线为32位的微机系统(如80386、80486系统),其存储器通常由4个8位宽的存储体构成,以支持8位(字节)、16位(字)以及32位(双字)的存储器操作。下图给出的是典型的32位存储器接口结构,它将整个存储器分成4个8位宽的存储体(BANK0BANK3),并分别用BE0BE3来作为4个存储体的选体信号(也称字节允许信号),BE0BE3是CPU在其内部将32位物理地址的最低两位A0A1译码而产生的,并作为地址信息的一部分与其余 30

43、 位地址信息(A2A31)共同出现在CPU的输出引脚上。,2019/7/24,74/118,32位存储器接口结构,2019/7/24,75/118,4 堆栈,作用:堆栈主要用来暂时保存程序运行时的一些地址或数据信息。例如,当CPU执行调用(Call)指令时,用堆栈保存程序的返回地址(亦称断点地址);在中断响应及中断处理时,通过堆栈“保存现场”和“恢复现场”;有时也利用堆栈为子程序传递参数。 堆栈是存储器中的一个特定的存储区,它的一端(栈底)是固定的,另一端(栈顶)是浮动的,信息的存入和取出都只能在浮动的一端进行,并且遵循后进先出(LastIn FirstOut)的原则。存取数据的方法是压入(P

44、USH)和弹出(POP)。 堆栈是在存储器中实现的,并由堆栈段寄存器SS和堆栈指针寄存器SP来定位。SS寄存器中存放的是堆栈段的段基值,它确定了堆栈段的起始位置。SP寄存器中存放的是堆栈操作单元的偏移量,SP总是指向栈顶。,2019/7/24,76/118,值得注意的是,这种结构的堆栈是所谓“向下生长的”,即栈底在堆栈的高地址端,当堆栈为空时SP就指向栈底。因此,堆栈段的段基址(由SS寄存器确定)并不是栈底。 堆栈的操作特点:实模式下的堆栈为16位宽(字宽),堆栈操作指令(PUSH指令或POP指令)对堆栈的操作总是以字为单位进行。即要压栈(执行PUSH指令)时, SP(SP)2,向堆栈压入16

45、bit数据;要弹栈(执行POP指令)时,从堆栈弹出16bit数据, SP(SP)2。可概括为: “压栈时, 先修改栈指针后压入”, “弹栈时, 先弹出后修改栈指针”。,2019/7/24,77/118,堆栈操作示意,2019/7/24,78/118,2.4 8086引脚图,40DIP(双列直插封装)器件 设计了最大/小两种工作模式,由引脚MN/*MX确定 引脚24-31(8根)在两种模式中有不同定义,其余为两种共有 部分AB和DB分时复用,2019/7/24,79/118,最小模式与最大模式的概念,Minimum mode 系统中只有一个微处理器:8086/8系统的所有控制信号均由8086/8

46、直接产生引脚24-31按最小模式定义MN/*MX = + 5V进入例:8086单板机,Maximum mode系统中除了有一个主处理器8086/8至少还有一个或多个协处理器如8087或8089(I/O) 系统需用的部分控制信号由外接8288产生 引脚24-31按最大模式定义 MN/*MX = GND 进入例:IBM PC/XT,我们主要介绍最小模式,2019/7/24,80/118,数据与地址引脚:AD15-AD0,地址/数据分时复用总线,双向、三态(0,1,Z) M或I/O的16位地址 (T1);when ALE= 1:传送数据(T2,T3,Tw,T4) ;when ALE= 0: “保持响

47、应”期间(响应DMAC)总线呈高阻态 A0作为连在低8位数据线上的M或I/O的片选信号,2019/7/24,81/118,A19/S6 A16/S3,地址/状态分时复用,输出、三态 T1: ALE=1, 访问M时,为最高4位地址,访问I/O时, 此4位为0 T2-T4:传送状态。S6 = 0, 表示使用总线。S5 = IF标志。S4 S3两位指示当前正在使用的段寄存器,“保持响应”态时,呈高阻态,2019/7/24,82/118,BHE/S7,总线高允许/状态, 输出、三态 为连在高8位数据线上的M或I/O的片选信号 有效(T1):允许开放高8位数据总线D15-D8,T2-T4期间输出状态,8

48、086不用 与A0配合,决定数据总线操作状态(下表) “保持响应”期间,呈高阻,2019/7/24,83/118,地址锁存信号ALE,ALE 地址锁存允许输出、三态、高电平有效 指示地址/数据总线上传送的是地址 T1状态,ALE由高低将地址装入地址锁存器,例如8282、 74LS373等,以便在接下来状态总线用于传送数据 “保持响应”期间,ALE不呈高阻态,2019/7/24,84/118,地址锁存器 8282/74LS373/74HC373,锁存器基本单元D触发器,2019/7/24,85/118,RD# 读控制,输出、三态、低电平有效 与M/IO#配合用,指示正在执行读M或I/O操作“保持

49、响应”期间,呈高阻 WR# 写控制, 输出、三态、低电平有效 与M/IO#配合,指示正在执行写M或I/O操作 “保持响应”期间,呈高阻 M/IO# Memory或I/O选择, 输出、三态 指示地址/数据总线上传送的是M或I/O口地址 = 1:M地址 = 0:I/O口地址 “保持响应”期间,呈高阻,2019/7/24,86/118,读写控制信号组合,M/IO#、WR#和RD#是最基本的控制信号,组合后,控制4种基本的总线周期,2019/7/24,87/118,准备就绪信号READY,READY 就绪指示,输入、高电平有效 T2-T3中查,若=0, T3后插Tw,直至= 1 协调较慢的Memory或I/O口,2019/7/24,88/118,总线数据缓冲方向控制,DEN# 数据允许, 输出、三态、低电平有效 控制外接数据缓冲器(如74LS245) 的输出允许端 有效表示数据总线上正在传数据 “保持响应”期间,呈高阻 DT/R# 数据发送/接收, 输出、三态 控制外接数据缓冲器如245的传送方向,=1表示CPU输出数据 “保持响应”期间,呈高阻态,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报