微型计算机原理与应用课件-第2章.ppt_第1页
微型计算机原理与应用课件-第2章.ppt_第2页
微型计算机原理与应用课件-第2章.ppt_第3页
微型计算机原理与应用课件-第2章.ppt_第4页
微型计算机原理与应用课件-第2章.ppt_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

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

文档简介

微机原理及其应用 第2章微处理器及系统结构 2 28086 8088CPU主要特性及内部结构 2 38086 8088CPU工作模式和引脚功能 2 48086 8088的存储器组织 目录 内容简介 8086 8088微处理器系统特性及结构 内部寄存器的结构特点 8086 8088微机系统的存储器组织 2 58086 8088的总线操作和时序 2 1微型计算机的基本结构 2 1微型计算机系统 1 微型计算机的基本组成 一个典型的微型计算机系统可以分成硬件系统和软件系统两大部分 第1章微机基础知识 1 微机的硬件系统计算机由运算器 控制器 存储器 输入设备和输出设备等五大部分组成 通常把运算器和控制器称为中央处理器CPU 把CPU和存储器合称为计算机的主机 而把输入设备和输出设备以及外存储器合称为外部设备 简称外设 微型计算机由微处理器 存储器 输入输出 I O 接口电路及系统总线组成的 系统总线 三总线 即数据总线 地址总线和控制总线 如图1 1所示 第1章微机基础知识 1 CPUCPU是一个复杂的电子逻辑元件 它包含了早期计算机中的运算器 控制器及其他功能 能进行算术 逻辑运算及控制操作 2 内存所谓内存就是指微型计算机内部的存储器 由书中图2 1可以看到 内存是直接连接在系统总线上的 因此 内存的存取速度比较快 由于内存价格较高 一般其容量较小 这与作为外设 外部设备 的外部存储器刚好相反 后者容量大而速度慢 内存用来存放微型计算机要执行的程序及数据 在微型计算机的工作过程中 CPU从内存中取出程序执行或取出数据进行加工处理 这种由内存取出的过程称为读出内存 而将数据或程序存放于内存的过程则称为写入内存 内存包含有很多存储单元 每个内存单元包含8bit 为区分不同的内存单元 对计算机中的每个内存单元进行编号 内存单元的编号就称为内存单元的地址 读 将内存单元的内容取入CPU 原单元内容不改变 写 CPU将信息放入内存单元 单元中原内容被覆盖 内存的读写的步骤为 CPU把要读写的内存单元的地址放到AB上若是写操作 CPU紧接着把要写入的数据放到DB上CPU发出读写命令数据被写入指定的单元或从指定的单元读出到DB若是读操作 CPU紧接着从DB上取回数据 3 系统总线系统总线包括地址总线 数据总线和控制总线 这些总线提供了微处理器 CPU 与存储器 输入 输出接口部件的连接线 可 以认为 一台微型计算机就是以CPU为核心 其他部件全都 挂接 在与CPU相连接的系统总线 微型计算机与外设的连接线称为外总线 也称为通信总线 它的功能就是实现计算机与计算机或计算机与其他外设的信息传送 微型计算机工作时 通过系统总线将指令读到CPU CPU的数据通过系统总线写入内存单元 CPU将要输出的数据经系统总线写到接口 再由接口通过外总线传送到外设 当外设有数据时 经由外总线传送到接口 再由CPU通过内总线读接口读到CPU中 地址总线AB 用来传送CPU输出的地址信号 确定被访问的存储单元 I O端口 地址线的根数决定了CPU的寻址范围 CPU的寻址范围 2n n 地址线根数数据总线DB 在CPU与存储器 I O接口之间数据传送的公共通路 数据总线的条数决定CPU一次最多可以传送的数据宽度 控制总线CB 用来传送各种控制信号 机械工业出版社电子制作 邓蓓 2 微型计算机软件系统软件系统是指为计算机运行工作服务的全部技术资料和各种程序 它可以保证计算机硬件的功能得以充分发挥 微机的软件系统是由系统软件 应用软件组成 系统软件通常包括 操作系统 语言处理程序 诊断调试程序 设备驱动程序以及为提高机器效率而设计的各种程序 在系统软件中 最重要的软件当属操作系统 即OS OperatingSystem 所有的应用程序 包括系统软件中的一些程序 都要在操作系统构筑的平台上运行 应用软件是为了解决各类应用问题而编写的程序 它直接面向用户 为用户服务 应用软件也可以逐步标准化 模块化 逐步形成了解决各种典型问题的应用程序的组合 称为软件包 第1章微机基础知识 第2章微处理器及系统结构 2 2Intel8086 8088CPU主要特性及内部结构 2 1 18086 8088CPU主要特性Intel8086是16位微处理器 采用HMOS工艺40条引脚封装 使用5V电源 时钟频率5MHz 主要特性如下 1 8086CPU数据总线为16位 8088CPU数据总线为8位 2 地址总线都是20位 低16位与数据总线分时复用 可直接寻址1MB的存储空间 3 有16位的端口地址 可以寻址64KB的I O端口 4 有99条基本指令 指令功能强大 5 有8种基本寻址方式 6 可处理内部和外部中断 外部中断源多达256个 7 兼容性好 与80X86 8085在源程序一级兼容 8 8086可与和协处理器 8087 8089 组成多处理器系统 8086CPU由两部分即指令执行单元EU和总线接口单元BIU组成 指令执行单元由算术逻辑运算单元ALU 标志寄存器FLAGS 通用寄存器组和EU控制器等4个部件组成 其主要功能是执行指令 总线接口部件BIU由地址加法器 专用寄存器组 指令队列和总线控制逻辑等4个部件组成 其主要功能是形成访问存储器的物理地址 访问存储器取得指令并暂存到指令队列中等待执行 访问存储器或I O端口以及读取操作数参与EU运算或存放运算结果等 BIU不断地从存储器取指令送入IPQ 指令预取队列 EU不断地从IPQ取出指令执行EU和BIU构成了一个简单的2工位流水线指令预取队列IPQ是实现流水线操作的关键 类似于工厂流水线的传送带 第2章微处理器及系统结构 令预取队列的存在使EU和BIU两个部分可同时进行工作 带来了以下两个好处 提高了CPU的效率降低了对存储器存取速度的要求采用并行流水线工作方式对内存空间实行分段管理 每段大小为16B 64KB用段地址和段内偏移实现对1MB空间的寻址设置地址段寄存器指示段的首地址8088与8086的区别 1 8088BIU中指令队列长度只有4B 8086BIU指令队列长度有6B 2 8088BIU通过总线控制电路与外部交换数据的总线宽度是8位 总线控制电路与专用寄存器组之间的数据总线宽度也是8位 而EU内部总线仍是16位 所以把8088称为准16位微处理器 支持多处理器系统片内无浮点运算部件 浮点运算由数学协处理器8087支持 或用软件模拟 8086 8088 微处理器不仅将微处理器的内部寄存器扩充至16位 从而使寻址能力和算术逻辑运算能力有了进一步提高 而且由于采取了上述一些措施 使得微处理器的综合性能与8位微处理器相比有了明显的提高 2 2 18086 8088CPU引脚功能 1 8086 8088CPU的主要引脚及功能8086 8088CPU是十六位的微处理器 它向外的信号至少应包含16条数据线 20条地址线 再加上其他一些必要的控制信号 为了减少芯片引脚数量 对部分引脚采用了分时复用的方式 构成40条引脚的双列直插式封装 8086CPU封装外形与内部各功能部件之间的相互连接如图2 3a 所示 图2 38086CPU封装外形与实物图a 封装外形 第2章微处理器及系统结构 引脚定义的方法可大致分为 每个引脚只传送一种信息 RD等 引脚电平的高低不同的信号 IO M等 CPU工作于不同方式有不同的名称和定义 WR LOCK等 分时复用引脚 AD7 AD0等 引脚的输入和输出分别传送不同的信息 RQ GT等 8088分为两种工作模式由MN MX端状态决定 8086CPU上有MN MX输入引线 用以决定8086CPU工作在哪种工作模式之下 当MN MX 1时 8086CPU工作在最小模式之下 此时 构成的微型机中只包括一个8086CPU 且系统总线由CPU的引线形成 微型机所用的芯片少 当MN MX 0时 8086CPU工作在最大模式之下 在此模式下 构成的微型计算机中除了有8086CPU之外 还可以接另外的CPU 如8087 8089等 构成多微处理器系统 1 最小模式下的引线在最小模式下 8086CPU的引线如图2 2所示 不包括括号内的信号 现对各引脚介绍如下 A16 A19 S3 S6 这是4条时间复用 三态输出的引线 在8086CPU执行指令过程中 某一时刻从这4条线上送出地址的最高4位A16 A19 而在另外时刻 这4条线送出状态S3 S6 这些状态信息里 S6始终为低 S5指示状态寄存器中的中断允许标志的状态 它在每个时钟周期开始时被更新 S4和S3用来指示CPU现在正在使用的段寄存器 S4 S3的状态编码 在CPU进行输入 输出操作时 不使用这4位地址 故在送出接口地址的时间里 这4条线的输出均为低电平 在一些特殊情况下 如复位或DMA操作时 这4条线还可以处于高阻 或浮空 或三态 状态 AD0 AD15 它们是地址 数据时分复用的输入 输出信号线 其信号是经三态门输出的 由于8086微处理器只有40条引脚 而它的数据线为16位 地址线为20位 因此引线数不能满足信号输入 输出的要求 则要选择分时复用 M IO 它是CPU的三态输出控制信号 用来区分当前操作是访问存储器还是访问I O端口 若该引脚输出为低电平 则访问的是I O端口 若该引脚输出为高电平 则访问的是存储器 WR 它是CPU的三态输出控制信号 该引脚输出为低电平时 表示CPU正处于写存储器或写I O端口的状态 DT R 该引脚是CPU的三态输出控制信号 用于确定数据传送的方向 高电平为发送方向 即CPU写数据到内存或接口 低电平为接收方向 即CPU到内存或接口读数据 该信号通常用于数据总线驱动器8286 8287 74245 的方向控制 DEN 这是CPU经三态门输出的控制信号 该信号有效时 表示数据总线上有有效的数据 它在每次访问内存或接口以及在中断响应期间有效 它常用做数据总线驱动器的片选信号 ALE 三态输出控制信号 高电平有效 当它有效时 表明CPU经其引线送出有效的地址信号 因此 它常作为锁存控制信号将A0 A19锁存于地址锁存器的输出端 RD 它是读选通三态输出信号 低电平有效 当其有效时 表示CPU正在进行存储器或I O读操作 READY 它是准备就绪输入信号 高电平有效 当CPU对存储器或I O进行操作时 在T3周期开始采样READY信号 若为高电平 表示 存储器或I O设备已准备好 若其为低电平 表明被访问的存储器或I O设备还未准备好数据 则应在T3周期以后 插入TWAIT周期 等待周期 然后在TWAIT周期中再次采样READY信号 直至READY变为有效 高电平 TWAIT周期才可以结束 进入T4周期 完成数据传送 INTR 它是可屏蔽中断请求输入信号 高电平有效 CPU在每条指令执行的最后一个T状态采样该信号 以决定是否进入中断响应周期 这条引脚上的请求信号 可以用软件复位内部状态寄存器中的中断允许位 IF 加以屏蔽 TEST 它是可用WAIT指令对该引脚进行测试的输入信号 低电平有效 当该信号有效时 CPU继续执行程序 否则CPU就进入等待状态 空转 这个信号在每个时钟周期的上升沿由内部电路进行同步 NMI 它是屏蔽中断输入信号 边沿触发 正跳变有效 这条引脚上的信号不能用软件复位内部状态寄存器中的中断允许位 IF 予以屏蔽 所以由低到高的变化将使CPU在现行指令执行结束后就引起中断 RESET 它是CPU的复位输入信号 高电平有效 为使CPU完成内部复位过程 该信号至少要在4个时钟周期内保持有效 复位后CPU内部寄存器的状态如表2 2所示 各输出引脚的状态如表2 3所示 表2 3中从 S0 到各引脚均处于浮动状态 当RESET返回低电平时 CPU将重新启动 表2 2复位后的内部寄存器状态 表2 3复位后各引脚的状态 它是CPU输出的中断响应信号 是CPU对外部输入的INTR中断请求信号的响应 在响应中断过程中 由引出端送出两个负脉冲 可用做外部中断源的中断向量码的读选通信号 HOLD 它是高电平有效的输入信号 用于向CPU提出保持请求 当某一部件要占用系统总线时 可通过这条输入线向CPU提出请求 HLDA 这是CPU对HOLD请求的响应信号 是高电平有效的输出信号 当CPU收到有效的HOLD信号后 就会对其做出响应 一方面使CPU的所有三态输出的地址信号 数据信号和相应的控制信号变为高阻状态 浮动状态 同时还输出一个有效的HLDA 表示处理器现在已放弃对总线的控制 当CPU检测到HOLD信号变低后 就立即使HLDA变低 同时恢复对总线的控制 S7 它是时间复用的三态输出信号 该信号有效 用于读 写数据的高字节 D8 D15 用以保证8086可以一次读 写一个字节 高字节或低字节 或者读 写一个字 16位 CLK 这是时钟信号输入端 由它提供CPU和总线控制器的定时信号 8086CPU的标准时钟频率为5MHz VCC 它是 5V电源输入引脚 GND 它是接地端 2 最大模式下的引线当MN 加上低电平时 8086CPU工作在最大模式之下 此时 除引线24到34这几条引线之外 其他引线与最小模式完全相同 如图2 2所示 图中括号内的信号就是最大模式下重新定义的信号 这是最大模式下由8086CPU经三态门输出的状态信号 这些状态信号加到Intel公司同时提供的总线控制器 8288 上 可以产生系统总线所需要的各种控制信号 的状态编码表示某时刻8086CPU的状态 其编码如表2 4所示 从表2 4可以看到 当8086CPU进行不同操作时 其输出的S2 S0的状态是不一样的 因此 可以简单地理解为8288对这些状态进行译码 产生相应的控制信号 在本章的后面可以看到 8288总线控制器利用S2 S0为构成系统总线提供了足够的控制信号 CPU检测到这个请求后 在下一个T4或T1期间 在同一个引脚输出宽度为一个时钟周期的负向脉冲给请求总线的设备 作为总线响应信号 相当于HLDA信号 这样从下一个时钟周期开始 CPU就释放总线 总线请求设备便可以利用总线完成某种操作 总线请求设备在对总线操作结束后 再产生一个宽度为一个时钟周期的负向脉冲 通过该引脚送给CPU 它表示总线请求已结束 CPU检测到该结束信号后 从下一个时钟周期开始又重新控制总线 继续执行刚才因其他总线设备请求总线而暂时停止的操作 它是一个总线封锁信号 低电平有效 该信号有效时 别的总线控制设备的总线请求信号将被封锁 不能获得对系统总线的控制 信号由前缀指令 LOCK 使其有效 直至下一条指令执行完毕 QS1 QS0 它们是CPU输出的队列状态信号 根据该状态信号输出 从外部可以跟踪CPU内部的指令队列 QS1 QS0的编码如表2 5所示 队列状态在CLK周期期间有效 表2 5QS0 QS1的状态编码 2 2 38088CPU的引线及其功能8086CPU和8088CPU的内部总线及内部寄存器均为16位 是完全相同的 但是 8088CPU的外部数据线是8位的 即AD0 AD7 每一次传送数据只能是8位 而8086CPU是真正的16位处理器 每一次传送数据既可以是16位也可以是8位 高8位或低8位 的 它们有相同的内部寄存器和指令系统 在软件上是互相兼容的 8088CPU的引线如图2 3所示 图2 38088CPU引线 对照图2 2和图2 3 可以发现它们之间的主要不同表现在引线上 1 由于8088CPU外部一次只传送8位数据 因此其引线A8 A15仅用于输出地址信号 而8086则将此8条线变为双向分时复用的AD8 AD15 即某一时刻送出地址A8 A15 而另一时刻则用这8条线传送数据的高8位D8 D15 在进行16位数据操作时 8088CPU一定需要两个总线周期才能完成16位数据操作 而8086CPU可能只用一个总线周期 一次总线操作就可完成 因此 8086的速度较8088要快一些 2 8086CPU上的 S7信号在8088上变为 HIGH 信号 这是一条状态输出线 它与IO 和DT 信号一起 决定了8088CPU在最小模式下现行总线周期的状态 它们的不同电平所表示的处理器操作情况如表2 6所示 机械工业出版社电子制作 邓蓓 2 2 48086 8088CPU内部结构 第2章微处理器及系统结构 一条命令的执行过程一般分为 取指令取操作数执行指令写入存储器8088出现以前以上步骤顺序执行 串行 8086内部的BIU和EU两个独立单元 可独立完成总线操作和指令执行两个操作 即两个单元可重叠操作 可两次或多次重叠 8088以前的CPU采用串行工作方式 1 CPU访问存储器 存取数据或指令 时要等待总线操作的完成2 CPU执行指令时总线处于空闲状态缺点 CPU无法全速运行解决 总线空闲时预取指令 使CPU需要指令时能立刻得到 取指令1 执行1 取操作数2 执行2 CPU BUS 忙碌 忙碌 忙碌 忙碌 存结果1 取指令2 8088CPU采用并行工作方式 取指令2 取操作数 BIU 存结果 取指令3 取操作数 取指令4 执行1 执行2 执行3 EU BUS 忙碌 忙碌 忙碌 忙碌 忙碌 忙碌 8086CPU的寄存器结构1 8086CPU中有14个16位的寄存器 8个16位通用寄存器 2个16位指针寄存器 2个16位的变址寄存器 4个16位的段寄存器 1个16位指令指针 1个16位标志寄存器 8086 8088CPU的内部寄存器如图2 2所示 第2章微处理器及系统结构 2 8086 8088 的内部寄存器含14个16位寄存器 按功能可分为三类8个通用寄存器4个段寄存器2个控制寄存器数据寄存器 AX BX CX DX 地址指针寄存器 SP BP 变址寄存器 SI DI 8个16位通用寄存器 它们可分成两组 一组由AX BX CX和DX构成 称为数据寄存器 可用来存放16位的数据或地址 也可把它们当作8个8位寄存器来使用 即把每个通用寄存器的高半部分和低半部分分开 低半部分被命名为AL BL CL和DL 高半部分则被命名为AH BH CH和DH 8位寄存器只能存放数据而不能存放地址 8086 8088 数据寄存器8088含4个16位数据寄存器 它们又可分为8个8位寄存器 即 AXAH ALBXBH BLCXCH CLDXDH DL常用来存放参与运算的操作数或运算结果 数据寄存器的用法AX 累加器 多用于存放中间运算结果 所有I O指令必须都通过AX与接口传送信息 BX 基址寄存器 可存数据或在间接寻址中用于存放基地址 还可用于寻址 CX 计数寄存器 可存数据还可用于在循环或串操作指令中存放循环次数或重复次数 DX 数据寄存器 在32位乘除法运算时 存放高16位数 在间接寻址的I O指令中存放I O端口地址 指针寄存器 地址 SP 堆栈指针寄存器 其内容为栈顶的偏移地址 BP 基址指针寄存器 常用于在访问内存时存放内存单元的偏移地址 BX与BP在应用上的区别作为通用寄存器 二者均可用于存放数据 作为基址寄存器 BX通常用于寻址数据段 BP则通常用于寻址堆栈段 BX一般与DS或ES搭配使用变址寄存器SI 源变址寄存器DI 目标变址寄存器变址寄存器常用于指令的间接寻址或变址寻址 特别是在串操作指令中 用SI存放源操作数的偏移地址 而用DI存放目标操作数的偏移地址 控制寄存器IP 指令指针寄存器 16位 它和代码寄存器CS一起可以确定当前所要取的指令的内存地址 CPU执行程序的地址总是为CS 16 IP 当顺序执行程序时 CPU每从内存取一个指令字节 IP自动加1 指向下一个要读取的指令 其内容为下一条要执行的指令的偏移地址 当CS不变 IP单独改变时 会发生段内程序转移 当CS和IP同时改变时 会发生段间程序转移 PSW是程序状态字 也有人称它为状态寄存器或标志寄存器 它用来存放8086CPU在工作过程中的状态 PSW各位标志如图 标志寄存器是一个16位的寄存器 空着的各位暂未使用 8086中所用的9位对了解8086CPU的工作和用汇编语言编写程序是很重要的 这些标志位的含义如下 C 进位标志位 做加法时出现进位或做减法时出现借位 该标志位置1 否则清0 位移和循环指令也影响进位标志 P 奇偶标志位 当结果的低8位中1的个数为偶数时 则该标志位置1 否则清0 A 半加标志位 做加法时 当位3需向位4进位 或做减法时位3需向位4借位时 该标志位置1 否则清0 该标志位通常用于对BCD算术运算结果的调整 Z 零标志位 运算结果所有位均为0时 该标志位置1 否则清0 S 符号标志位 当运算结果的最高位为1时 该标志位置1 否则清0 T 陷阱标志位 单步标志位 当该位置1时 将使8086执行单步指令工作方式 在每条指令执行结束时 CPU总是去测试T标志位是否为1 如果为1 那么在本指令执行后将产生陷阱中断 从而执行陷阱中断处理程序 该中断处理程序的首地址由内存的00004H 00007H4个单元提供 该标志位通常用于程序的调试 例如 系统调试软件DEBUG中的T命令 就是利用它来进行程序的单步跟踪的 I 中断允许标志位 如果该位置1 则处理器可以响应可屏蔽中断请求 否则就不能响应可屏蔽中断请求 D 方向标志位 当该位置1时 串操作指令为自动减量指令 即从高地址到低地址处理字符串 否则串操作指令为自动增量指令 O 溢出标志位 在算术运算中 带符号数的运算结果超出了8位或16位带符号数所能表达的范围 即字节运算大于 127或小于 128时 字运算大于 32767或小于 32768时 该标志位置位 段寄存器4个16位段寄位器 它们是代码段寄存器CS 用于存放当前代码段的段地址 数据段寄存器DS 用于存放当前数据段的段地址 附加段寄存器ES 用于存放当前附加段的段地址 堆栈段寄存器SS 用于存放当前堆栈段的段地址 这些段寄存器彼此不能互换 每个段寄存器在只能寻址64KB CS 代码段寄存器代码段用于存放指令代码DS 数据段寄存器ES 附加段寄存器数据段和附加段用来存放操作数SS 堆栈段寄存器堆栈段用于存放返回地址 保存寄存器内容 传递参数 物理地址与逻辑地址在具有地址变化机构的计算机中地址有两种物理地址和逻辑地址逻辑地址 允许在程序中编排的地址物理地址 信息在存储器中实际存放的地址8086 8088 每个存储单元也都认为有这两种地址 物理地址 60000H60001H60002H60003H60004H 12H F0H 1BH 08H 物理地址存储器的操作完全基于物理地址 问题 8088的内部总线和内部寄存器均为16位 如何生成20位地址 解决 存储器分段 存储器分段一个段是存储器的一个逻辑单元 长度达64KB 每个段都由连续的存储单元构成 使存储器中可独立的分别寻址的单位 每段第一个字节的位置成为 段起始地址 每个段可相互重叠 也可指向同一空间 8086 8088 CPU有20条地址线 可配置1M存储器 地址为00000H FFFF0H A C B D 1M 0 存储器分段 高地址 低地址 段基址 段基址 段基址 段基址 最大64KB 最小16B 段i 1 段i 段i 1 逻辑地址段基地址和段内偏移组成了逻辑地址段地址偏移地址 偏移量 格式为 段地址 偏移地址物理地址 段基地址 16 偏移地址 60002H 00H 12H 60000H 0000 段基地址 16位 段首地址 偏移地址 0002H BIU中的地址加法器用来实现逻辑地址到物理地址的变换8088可同时访问4个段 4个段寄存器中的内容指示了每个段的基地址 段基址 段内偏移 物理地址 16位 20位 0000 对于CPU读程序的内存地址 总是由下式来决定 读程序的内存物理地址 CS 16 IP当8086 8088 CPU复位启动时的复位启动地址 复位入口地址 可如下确定 由于复位时CS FFFFH 而IP 0000H 则有复位启动地址 CS 16 IP FFFF0H 0000H FFFF0H也就是说 当8086 8088 CPU读程序时 其内存地址永远是由代码段 CS 寄存器 16与IP 指令指针 的内容作为偏移地址来决定的 当8086 8088 CPU读 写内存数据时 DS SS和ES三个段寄器均可使用 而偏移地址又有多种不同的产生方法 段寄存器的设立不仅使8086 8088 的存储空间扩大到1MB 而且为信息按特征分段存储带来了方便 在存储器中 信息按特征可分为程序代码 数据 微处理器状态等 为了操作方便 存储器可以相应地划分为 程序区 用来存放程序的指令代码 数据区 用来存放原始数据 中间结果和最后运算结果 堆栈区 用来存放压入堆栈的数据和状态信息 只要修改段寄存器的内容 就可以将相应的存放区设置在内存存储空间的任何位置上 这些区域可以通过段寄存器的设置使之相互独立 也可将它们部分或完全重叠 需要注意的是 改变这些区域的地址时 是以16个字节为单位进行的 8086CPU中 对不同类型存储器的访问所使用的段寄存器和相应的偏移地址的来源做了一些具体规定 它们的基本约定如表 表2 8段寄存器使用时的一些基本约定 8086CPU的工作时序微处理器按一定的时序划分划分为两类 时钟周期和总线周期一条指令是由若干个总线周期来完成的 一个总线周期又由若干个时钟周期构成 时钟周期 每个时钟周期持续的时间总线周期 通过总线进行一次读或写的过程 正常情况下 一个总线周期由4个时钟周期组成 时钟周期就是前面提到的加在CPU芯片引脚CLK上的时钟信号的周期 图2 98086的写总线周期 图2 108086的读总线周期 中断响应周期当8086 8088 的INTR上有一有效的高电平向CPU提出中断请求且满足IF 1 开中断 时 CPU执行完一条指令后 就会对其做出响应 该中断响应需要两个总线周期 图2 11中断响应周期 2 3系统总线的形成总线分类 CPU总线 CPU 其他部件系统总线 主机 I O接口外部总线 微机 外设 片内总线片外总线 按相对CPU的位置 按层次结构 2 3 1几种常用的芯片为更好地说明系统总线的形成 首先介绍有关的集成电路芯片 要强调的是 为了更好地进行微型机的工程应用 尽量多地记住或理解一些现有的芯片是十分有益的 1 带有三态输出的锁存器在形成8088 8086 系统总线时 常用到具有三态输出的信号锁存器8282和8283 除前者是正相输出而后者是反相输出外 8282和8283的其他性能完全一样 其引线如图2 12所示 STB为锁存信号 高电平有效 用于锁存数据 图2 12具有三态输出的锁存器 2 单向三态门驱动器将数个三态门集成在一块芯片中便构成了单向三态门驱动器 单向三态门驱动器的种类非常多 其中74系列的244是经常使用的一种三态门驱动器 其引线如图2 13所示 从图2 13可以看到 两个控制端分别控制4个三态门 当其控制端加上低电平时 相应的4个三态门导通 加高电平时 三态门呈高阻状态 图2 13单向三态门驱动器74LS244 3 双向三态门驱动器对于数据总线 可采用双向驱动器 在构成系统总线时 常用8286和8287 两者除8286是正相的 8287是反相的外 其他的性能完全相同 它们的框图如图2 14所示 从图2 14可以看到 是低电平有效 DR是三态门传送方向控制 当 0 DR 0时 由B边向A边传送 0 DR 1时 由A边向B边传送 当 1时 A B两边均呈现高阻状态 与这样的驱动器类似的是工程上经常使用的74系列的245 它在结构上与8286是一样的 图2 14双向三态门驱动器 2 3 2最小模式下的系统总线形成在最小模式下 系统总线的形成方式如图2 15所示 由图2 15可以看到 在最小模式下 20条地址线和1条信号线用三片8282 或三片74LS373 锁存器形成 当一个总线周期T1时刻CPU送出这21个地址信号时 CPU同时送出ALE脉冲 就用此脉冲将这21个地址信号锁存在三个373的输出端 从而形成地址总线信号 双向数据总线用2片8286 或2片74LS245 形成 利用最小模式下由8086CPU所提供的和DT 分别来控制2片74LS245的允许端和方向控制端DR 从而实现了16位的双向数据总线D0 D15 控制总线信号由8086CPU提供 这样就实现了最小模式下的系统总线 这里说明两点 1 系统总线的控制信号是8086CPU直接产生的 由于8086CPU驱动能力不够 因此需加上一片74LS244进行驱动 2 现在形成的系统总线上不能进行DMA传送 因为未对系统总线形成电路中的芯片 图中373 245及244 做进一步控制 若需要时 可参阅本节后面的内容 当然也可以考虑用HLDA来参与控制 图2 158086在最小模式下的总线形成方式 2 3 3最大模式下的系统总线形成为了实现最大模式 要使用厂家提供的总线控制器8288形成系统总线的一些控制信号 总线的形成方式如图2 16所示 图2 168086在最大模式下的系统总线的形成方式 由图2 16可以看到 在形成最大模式下的系统总线时 地址线A0 A19和同最小模式时一样 利用三片74LS373构成锁存器 所不同的是 此时的锁存脉冲ALE是由总线控制器8288产生的 利用三片74LS373的输出形成了最大模式下的地址总线A0 A19和 在形成最大模式下双向数据总线时 同样使用了两片双向三态门74LS245 而且74LS245的允许信号和方向控制信号DR是总线控制器8288提供的DT 和信号 因为当8086CPU工作在最大模式时 CPU上已不再提供DT R和DEN信号 值得注意的是 8086CPU工作在最小模式时 CPU上提供的DEN是低电平有效 而当它工作在最大模式时 由总线控制器8288所产生的DEN是高电平有效 故在图2 16中要在总线控制器8288输出的DEN的后面接一个反相门 然后再接到74LS245上 最大模式下的控制信号主要由总线控制器8288产生 它所提供的控制信号主要是 中断响应 内存读 内存写 接口读和接口写 应当注意到 在总线控制器8288输出的控制信号中 对内存操作的控制信号和对接口的控制信号己经分开 而不像最小模式时用于内存和用于接口的读 写控制信号是共用的 在那里需要用M 信号来区别对内存操作还是对接口操作 还需要说明的是 若所形成的系统总线中还需要其他一些控制信号 例如复位信号RESET CPU时钟信号CLK 振荡器信号OSC等所有系统工作所需要的信号 都可以利用74244三态门驱动后加到系统总线上 同时 总线上还需要接上系统工作时所需要的电源 例如 5V 12V等 和多条地线 显然 以上所描述的系统总线是一种自行设计的专用总线 在这样的系统总线上 接上内存 接口及相应的外设便可以构成图2 1所示的微型计算机 除上述专用总线外 在本书的后续章节中将介绍各种总线标准 如前所述 当系统总线形成之后 构成微型机的内存及各种接口就可以直接与系统总线相连接 从而构成所需的微型机系统 在后面的章节中会有直接采用这样的系统总线信号来叙述问题的内容 而不再另外做出说明 在图2 16中 74LS373和74LS245可以用其他类似的器件来代替 例如可分别用8282和8286代替 在此图中 同样没有考虑在此系统总线上实现DMA传送 有关DMA传送留待后面的章节再做说明 2 3 48088的系统总线形成前面详细说明了8086系统总线的形成过程 现在再就8088系统总线的形成做简要说明 由于两者只有很小的差异 对于8088来说 仅将其最大模式下的系统总线的形成电路列出 如图2 17所示 图2 178088CPU在最大模式下的总线形成方式 由图2 17可以看到 8088CPU与8086CPU在最大模式下系统总线形成的不同主要表现在以下三个方面 一是由于8088CPU外部数据线是8位的 不存在高字节 因此地址锁存器上不再有信号 也就不需要锁存信号 二是地址信号A8 A15可以锁存 也可以不锁存 用三态门直接驱动也是可以的 这是因为在8088CPU上 这8条信号线只用来传送地址A8 A15 而在8086CPU上 这8条线是分时复用的 既用来传送地址A8 A15 又用于传送数据D8 D15 故必须用锁存储器加以锁存 三是数据总线是8位的 只需用一片74LS245 或其他类似器件 进行驱动 同时对这片驱动器的DR和控制端进行控制 实现数据的双向传送 对74LS245的控制方式是相同的 早期的PC机多选择8088CPU 并使8088CPU工作在最大模式之下 在类似于上述总线的基础上构成微型机系统 2 8086 8088的工作模式8086 8088CPU为适应不同的应用环境 设置有两种工作模式 即最大工作模式和最小工作模式 1 最小工作模式 所谓最小工作模式 是指系统中只有一个8086 8088微处理器 所有的总线控制信号都由8086 8088CPU直接产生 将CPU的引脚信号MN 接高电平 5V 可使它工作于最小模式 第2章微处理器及系统结构 2 最大工作模式所谓最大工作模式 是指系统中包含有两个以上的微处理器 其中一个为主处理器 就是8086 8088CPU 其他是协处理器 常与主处理器8086 8088CPU相配的协处理器有两个 一个是专用于数值运算的协处理器8087 使用它可大幅度提高系统数值运算速度 另一个专用于I O操作的协处理器8089 第2章微处理器及系统结构 1 AD15 AD0分时复用地址数据线 三态单向输出 在T2 T4期间作数据线D15 D0 双向三态输入 输出 2 A19 S6 A16 S3分时复用的地址 状态线 用作地址线时 A19 A16与AD15 AD0一起构成访问存储器的20位物理地址 3 BHE S7总线高字节有效信号 三态输出 BHE S7 0 时 用来表示当前高8位数据线上的数据有效 4 RD读信号 三态输出 当 0 时 表示当前CPU正在读存储器或I O端口 5 WR写信号 三态输出 当 0 时 表示当前CPU正在写存储器或I O端口 6 M IO存储器或I O端口访问信号 三态输出 当 1 时 表示当前CPU正在访问存储器 0 时 表示CPU当前正在访问I O端口 7 READY准备就绪信号 由外部输入 当READY 1 时 表示CPU访问的存储器或I O端口已准备好传送数据 8 RESET复位信号 由外部输入 高电平有效 第2章微处理器及系统结构 第2章微处理器及系统结构 2 38086 8088的存储器组织 2 3 1存储器的分段和物理地址的形成1 存储器的组成8086 8088系统中存储器的每一个存储单元 字节 都有一个独立的地址编码 地址编码采用20位二进制表示 地址译码器是根据地址编码才找到目标存储单元的 20位二进制地址编码的范围的十六进制表示为00000H FFFFFH 最多可表示220 1MB 地址编码唯一的存储单元 把20位二进制表示的地址称为物理地址 10110110 38F04H 存储单元内容 存储单元地址 2 存储器的分段分段原因 由于8086 8088内部寄存器是16位的 对地址进行运算的能力也是16位的 一个20位的物理地址在8086 8088内部是无法存储的 也无法运算 提出了对内存进行分段 分段方案 将1MB存储空间逻辑上分为若干段 每段存储容量不大于64KB 段的起始单元地址能够被16整除 即起始地址为XXXX0H 前16位成为段基址 段内某单元相对于段首单元的位移量成为偏移地址 段的种类 一个逻辑段用于存放不同的信息 如程序段 数据段 堆栈段 堆栈段 每个逻辑段的容量在64KB以内 段的分类 各个逻辑段之间可以紧密相连 也可以相互重叠 完全重叠或部分重叠 12340H 段基址 一个段 2233FH 0000H 0001H 0002H 偏移地址 FFFFH 第2章微处理器及系统结构 3 存储器地址 1 物理地址 8088 8086可直接寻址1MB的存储空间 其地址区域为00000H FFFFFH 与存储单元一一对应的20位地址 称之为存储单元的物理地址 2 偏移地址 偏移地址是某存储单元相对其所在段起始位置的偏移字节数 或简称偏移量 是一个16位的地址 3 物理地址的形成 物理地址是由段地址与偏移地址共同决定的 段地址来自于段寄存器 CS DS ES SS 是十六位地址 由段地址及偏移地址计算物理地址的表达式如下 物理地址 段地址 16 偏移地址 4 逻辑地址 程序中用来描述存储单元位置的地址称为逻辑地址 它以 段基址 偏移地址 的形式给出 段寄存器与段对应关系 第2章微处理器及系统结构 4 逻辑地址的来源如果访问存储器的指令 则段基址来源于代码段寄存器CS 偏移地址来源于指令指针IP 如果访问存储器读写操作数 则通常由数据段寄存器DS给出段基址 而其偏移地址要由CPU的指令执行部件EU根据指令中的寻址方式来进行计算 如果所采用的寻址方式是通过基址指针寄存器BP寻址 则段基址要由堆栈段寄存器SS提供 如果对堆栈进行操作 则段基址来源于堆栈段寄存器SS 偏移地址来源于堆栈指针SP 例如 某单元处于数据段中 已知DS 2300H 偏移地址为0658H 则其物理地址为 2300H 10H 0658H 23658H 第2章微处理器及系统结构 2 3 28086系统中存储器的分体结构1 8086系统中存储器的结构8086系统中 将1MB的存储空间分成两个512KB的存储体 一个存储体中包含偶数地址单元 用数据总线的低8位与它相连 另一个包含奇数地址单元 用数据总线的高8位与它相连 两个存储体之间采用字节交叉编址方式 如图2 9所示 第2章微处理器及系统结构 2 存储器存放数据情况若存放的数据是以字节为单位 在存储器中按顺序排列存放 例在10000H开始存储单元存放01H 13H 0ABH 86H 则在存储器中存放数据的情况如图2 12 若存放的数据是以字 16位 为单位的 则将每个字的低字节存放在低地址 高字节存放在高地址 并以低地址作为该字的地址 例在10003H开始存放1234H 567AH两个字 在存储器中存放数据的情况如图2 12 第2章微处理器及系统结构 2 3 38086 8088系统中的堆栈堆栈是在计算机中的RAM存储区开辟的一个特定区域 按照 后进先出 的原则组织 主要用于暂存数据和断点地址 1 堆栈的结构存储区的存储方式采用一端固定 称为栈底 另一端浮动 称为栈顶 的方式 即只允许在活动端进行数据的输入或删除 2 堆栈的操作堆栈段在存储区中的位置由堆栈段寄存器SS和堆栈指针SP来确定 SS中存放堆栈段的段基址 SP中存放栈顶的地址 此地址表示栈顶离段首址的偏移量 因此用SP指示栈元素进栈和出栈的偏移地址的变化 第2章微处理器及系统结构 1 建栈 建立堆栈就是设定堆栈的段基址和栈底 用户可以通过数据传送指令把堆段的段基址送入段寄存器SS 把栈底的偏移地址送入堆栈指针寄存器SP 此时栈中无数据 是一个空栈 若SS 1000H SP 2000H 则堆栈的情况如图2 13所示 建立堆栈指令为 MOVAX 1000HMOVSS AXMOVSP 2000H 2 入栈 入栈就是把数据压入堆栈 又称进栈 8086微处理器的入栈操作以字为单位 入栈操作分为两步 将堆栈指针寄存器SP的内容减2 即是栈顶向低地址方向移动一个字单元 指向新栈顶 即 SP SP 2 将一个字数据推入到SP所

温馨提示

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

评论

0/150

提交评论