微型计算机原理与汇编语言 第3章-1 80 x86微处理器简介.ppt_第1页
微型计算机原理与汇编语言 第3章-1 80 x86微处理器简介.ppt_第2页
微型计算机原理与汇编语言 第3章-1 80 x86微处理器简介.ppt_第3页
微型计算机原理与汇编语言 第3章-1 80 x86微处理器简介.ppt_第4页
微型计算机原理与汇编语言 第3章-1 80 x86微处理器简介.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

教学内容 本章在简要介绍80 x86系列微处理器的发展概况及其性能特性的基础上 重点介绍8086 8088CPU的内部结构 寄存器结构 引脚功能以及存储器管理等 具体内容如下 1 80 x86微处理器简介2 8086 8088微处理器3 8086 8088存储器和I O组织 学习要求 微处理器 CPU 是构成微型计算机的核心部件 是全机的控制中心 它控制全机各功能部件协调工作 它的性能决定了整个微型计算机的性能和系统结构 因此 学习和掌握微处理器的内部结构和工作原理是学习 微型计算机原理 的重要基础 本章具体学习要求如下 1 掌握8086 8088CPU的内部结构及工作原理 2 掌握8086 8088CPU中14个寄存器的分类 作用及有关寄存器的特定用法 3 掌握8086 8088存储器的分段管理方式 掌握逻辑地址 物理地址的概念以及如何由逻辑地址求物理地址 4 了解8086 8088CPU的引脚及其功能 第3章80 x86微处理器 3 180 x86微处理器简介3 28086 8088微处理器3 38086 8088存储器和I O组织 3 180 x86微处理器简介 80 x86微处理器是美国Intel公司生产的系列微处理器 该公司成立于1968年 1971年就设计了4位的4004芯片 1974年开发出8位的8080芯片 1978年正式推出16位的8086微处理器芯片 由此开始了Intel公司的80 x86系列微处理器的生产历史 本节简要介绍Intel公司80 x86系列微处理器的发展过程及其特性 表3 1给出了80 x86系列微处理器概况 下面通过对表中有关技术数据的分析来说明Intel80 x86系列微处理器的发展情况 集成度 CPU芯片中所包含的晶体管数 单位 万 片 主频 芯片所使用的主时钟频率 它直接影响计算机的运行速度 数据总线 计算机中各个组成部件间进行数据传送时的公共通道 内数据总线宽度 是指CPU芯片内部数据传送的宽度 位数 外数据总线宽度 是指CPU与外部交换数据时的数据宽度 显然 数据总线位数越多 数据交换的速度就越快 基本概念 地址总线 在对存储器或I O端口进行访问时 传送由CPU提供的要访问的存储单元或I O端口的地址信息的总线 其宽度决定了处理器能直接访问的主存容量大小 如8086有20根地址线 使用这20根地址线上不同地址信息的组合 可直接对220 1M个存储单元进行访问 PentiumII有36根地址线 因此它可直接寻址的最大地址范围为236 64G 高速缓冲存储器Cache为了满足微型计算机对存储器系统高速度 大容量 低成本的要求 目前 微型计算机系统采用如图3 1所示的三级存储器组织结构 即由高速缓冲存储器Cache 主存和外存组成 图3 1存储器三级结构 主存 当前正在执行的程序或要使用的数据必须从外存调入主存后才能被CPU读取并执行 主存容量通常为MB级 外存 当前没有使用的程序可存入外存 外存的容量通常很大 可达GB甚至TB级 Cache 高速缓冲存储器 最大特点是存取速度快 但容量较小 通常为KB级 将当前使用频率较高的程序和数据通过一定的替换机制从主存放入Cache CPU在取指令或读取操作数时 同时对Cache和主存进行访问 如果Cache命中 则终止对主存的访问 直接从Cache中将指令或数据送CPU处理 由于Cache的速度比主存快得多 因此 Cache的使用大大提高了CPU读取指令或数据的速度 表3 180 x86系列微处理器概况 3 28086 8088微处理器 8086有16条数据总线 可以处理8位或16位数据 有20条地址总线 可以直接寻址1M 220 字节的存储单元 在8086推出后不久 为方便原8位机用户 Intel公司很快推出了8088微处理器 其指令系统与8086完全兼容 CPU内部结构仍为16位 但外部数据总线是8位的 这样设计的目的主要是为了与原有的8位外围接口芯片兼容 3 2 18086 8088内部结构从功能上讲 8086CPU内部结构可分为两部分 1 总线接口单元BIU BusInterfaceUnit 负责完成CPU与存储器或I O设备之间的数据传送 2 执行单元EU ExecutionUnit 不与系统外部直接相连 它的功能只是负责执行指令 图3 28086CPU内部结构框图 AH AL BH BL CH CL DH DL 通用寄存器 SP BP SI DI 数据 寄存器 指针和变址 寄存器 ALU 数据总线 16位 暂存寄存器 EU 控制电路 AX BX CX DX 标志寄存器 执行单元 EU 总线接口单元 BIU 1 2 3 4 5 6 指令队列缓冲器 内部寄存器 IP ES SS DS CS ALU DB 16位 AB 20位 总线控制 电路 8086总线 DB 16位 地址 加法器 3 2 18086 8088内部结构一 总线接口单元BIU总线接口单元BIU的任务 读指令 指令队列出现空字节 80881个空字节 80862个空字节 时 从内存取出后续指令 BIU取指令时 并不影响EU的执行 两者并行工作 大大提高了CPU的执行速度 读操作数 EU需要从内存或外设端口读取操作数时 根据EU给出的地址从内存或外设端口读取数据供EU使用 写操作数 EU的运算结果 数据或控制命令等由BIU送往指定的内存单元或外设端口 总线接口单元 BIU 的组成1 4个16位段寄存器 代码段寄存器CS CodeSegment 数据段寄存器DS DataSegment 堆栈段寄存器SS StackSegment 和附加数据段寄存器ES ExtraSegment 2 一个16位的指令指针寄存器IP InstructionPointer 3 一个20位地址加法器 4 6字节指令队列缓冲器 5 一个与EU通讯的内部寄存器以及总线控制电路等 1 段寄存器8086CPU的地址引脚有20根 能提供20位的地址信息 可直接对1M个存储单元进行访问 但CPU内部可用来提供地址信息的寄存器都是16位的 那么如何用16位寄存器实现20位地址的寻址呢 8086 8088采用了段结构的内存管理的方法 将指令代码和数据分别存储在代码段 数据段 堆栈段 附加数据段中 这些段的段地址分别由段寄存器CS DS SS ES提供 代码段寄存器CS存储程序当前使用的代码段的段地址 代码段用来存放程序的指令代码 下一条要读取指令在代码段中的偏移地址由指令指针寄存器IP提供 数据段寄存器DS用来存放程序当前使用的数据段的段地址 一般来说 程序中所用到的原始数据 中间结果以及最终结果都存放在数据段中 堆栈段寄存器SS用来存放程序当前所使用的堆栈段的段地址 堆栈是在存储器中开辟的一个特定区域 附加数据段寄存器ES用来存放程序当前使用的附加数据段的段地址 附加数据段通常用于存放字符串操作时的目的字符串 程序员在编写汇编语言源程序时 应该按照上述规定将程序的各个部分放在规定的段内 每个源程序必须至少有一个代码段 而数据段 堆栈段和附加数据段则根据程序的需要决定是否设置 2 指令指针寄存器指令指针寄存器IP用来存放下一条要读取的指令在代码段中的偏移地址 IP在程序运行中能自动加1修正 从而使其始终存放的是下一条要读取的指令在代码段的偏移地址 由于CS和IP的内容决定了程序的执行顺序 因此程序员不能直接用赋值指令对其内容进行修改 有些指令能使IP和CS的值改变 如跳转指令 或使其值压入堆栈或从堆栈中弹出恢复原值 如子程序调用指令和返回指令 3 20位地址加法器8086 8088CPU在对存储单元进行访问以读取指令或读 写操作数时 必须在地址总线上提供20位的地址信息 以便选中对应的存储单元 那么 CPU是如何产生20位地址的呢 CPU提供的用来对存储单元进行访问的20位地址是由BIU中的地址加法器产生的 存储器中每个存储单元的地址可有以下两种表示方式 1 逻辑地址 表达形式为段地址 段内偏移地址段内偏移地址又称为 有效地址EA EffectiveAddress 读指令时 段地址由代码段寄存器CS提供 偏移地址由指令指针寄存器IP提供 读取或存储操作数时 段地址由DS ES或SS提供 段内偏移地址由指令给出 2 物理地址 CPU与存储器进行数据交换时在地址总线上提供的20位地址信息称为物理地址 段寄存器内容左移四位后 相当于乘以10H 得到段基址 段内第一个存储单元的物理地址 把段内偏移地址和段基址同时送到BIU中的地址加法器 形成一个20位的物理地址 从而实现对存储单元的访问 物理地址 段地址 10H 段内偏移地址如假设当前 CS 20A8H IP 2008H 那么 下一条从内存中读取的指令所在存储单元的物理地址为 20A8H 10H 2008H 22A88H 图3 3物理地址的形成 4 指令队列缓冲器8086的指令队列有6个字节 8088的指令队列有4个字节 对8086而言 当指令队列出现2个空字节 对8088而言 指令队列出现1个空字节时 BIU就自动执行一次取指令周期 将下一条要执行的指令从内存单元读入指令队列 它们采用 先进先出 原则 按顺序存放 并按顺序取到EU中去执行 指令队列的引入使得EU和BIU可并行工作 即BIU在读指令时 并不影响EU单元执行指令 EU单元可以连续不断地直接从指令队列中取到要执行的指令代码 从而减少了CPU为取指令而等待的时间 提高了CPU的利用率 加快了整机的运行速度 二 执行单元EU执行单元EU不与系统外部直接相连 它的功能只是负责执行指令 EU执行的指令从BIU的指令队列缓冲器中直接得到 执行指令时若需要从存储器或I O端口读写操作数时 由EU向BIU发出请求 再由BIU对存储器或I O端口进行访问 执行单元EU由下列部件组成 1 16位算术逻辑单元 ALU 进行算术和逻辑运算 2 16位标志寄存器FLAGS 存放CPU运算的状态和控制标志 3 数据暂存寄存器 暂存参加运算的数据4 通用寄存器 包括4个16位数据寄存器AX BX CX DX和4个16位指针与变址寄存器SP BP与SI DI 5 EU控制电路 它是控制 定时与状态逻辑电路 接收从BIU中指令队列取来的指令 经过指令译码形成各种定时控制信号 对EU的各个部件实现特定的定时操作 8088CPU与8086CPU的异同二者内部结构基本相似 执行单元EU完全相同 其指令系统 寻址方式及程序设计方法都相同 区别仅在于总线接口单元BIU 归纳起来主要有以下几个方面的差异 1 外部数据总线位数不同 8086外部数据总线16位 8088外部数据总线8位 2 指令队列缓冲器大小不同 8086指令队列可容纳6个字节 而8088指令队列只能容纳4个字节 3 部分引脚的功能定义有所区别 3 2 28086 8088寄存器结构 通用寄存器8个 数据寄存器4个 地址指针寄存器2个 变址寄存器2个 段寄存器4个 控制寄存器2个 共14个寄存器 一 通用寄存器通用寄存器 8个 包括四个数据寄存器AX AH AL BX BH BL CX CH CL DX DH DL 两个地址指针寄存器 SP BP 和两个变址寄存器 SI DI 1 数据寄存器AX BX CX DX数据寄存器一般用于存放参与运算的操作数或运算结果 每个数据寄存器都是16位的 但又可将高 低8位分别作为两个独立的8位寄存器来用 高8位分别记作AH BH CH DH 低8位分别记作AL BL CL DL 注意 8086 8088CPU的14个寄存器除了这4个16位寄存器能分别当作两个8位寄存器来用之外 其它寄存器都不能如此使用 AX Accumulator 称为累加器 用该寄存器存放运算结果可使指令简化 提高指令的执行速度 此外 所有的I O指令都使用该寄存器与外设端口交换信息 BX Base 称为基址寄存器 8086 8088CPU中有两个基址寄存器BX和BP BX用来存放操作数在内存中数据段内的偏移地址 BP用来存放操作数在堆栈段内的偏移地址 CX Counter 称为计数器 在设计循环程序时使用该寄存器存放循环次数 可使程序指令简化 有利于提高程序的运行速度 DX Data 称为数据寄存器 在寄存器间接寻址的I O指令中存放I O端口地址 在做双字长乘除法运算时 DX与AX一起存放一个双字长操作数 其中DX存放高16位数 寄存器AX BX CX DX的特定用法 2 地址指针寄存器SP BPSP StackPointer 称为堆栈指针寄存器 在使用堆栈操作指令 PUSH或POP 对堆栈进行操作时 每执行一次进栈或出栈操作 系统会自动将SP的内容减2或加2 以使其始终指向栈顶 BP BasePointer 称为基址寄存器 作为通用寄存器 它可以用来存放数据 但更经常更重要的用途是存放操作数在堆栈段内的偏移地址 3 变址寄存器SI DISI SourceIndex 称为源变址寄存器 DI DestinationIndex 称为目的变址寄存器 这两个寄存器通常用在字符串操作时存放操作数的偏移地址 其中SI存放源串在数据段内的偏移地址 DI存放目的串在附加数据段内的偏移地址 二 段寄存器为了对1M个存储单元进行管理 8086 8088对存储器进行分段管理 即将程序代码或数据分别放在代码段 数据段 堆栈段或附加数据段中 每个段最多可达64K个存储单元 段地址分别放在对应的段寄存器中 代码或数据在段内的偏移地址由有关寄存器或立即数给出 8086 8088的四个段寄存器CS CodeSegment 代码段寄存器 用来存储程序当前使用的代码段的段地址 DS DataSegment 数据段寄存器 用来存放程序当前使用的数据段的段地址 SS StackSegment 堆栈段寄存器 用来存放程序当前所使用的堆栈段的段地址 ES ExtraSegment 附加数据段寄存器 用来存放程序当前使用的附加数据段的段地址 表3 2段寄存器与提供段内偏移地址的寄存器之间的默认组合 三 控制寄存器IP InstructionPointer 指令指针寄存器 用来存放下一条要读取的指令在代码段内的偏移地址 用户程序不能直接访问IP FLAGS 标志寄存器 它是一个16位的寄存器 但只用了其中9位 这9位包括6个状态标志位 3个控制标志位 如图3 5所示 1 状态标志位 6位 状态标志位用来反映算术和逻辑运算结果的一些特征 下面分别介绍这6个状态标志位的功能 CF CarryFlag 进位标志 当进行加减运算时 若最高位发生进位或借位则CF为1 否则为0 通常用于判断无符号数运算结果是否超出了计算机所能表示的无符号数的范围 PF ParityFlag 奇偶标志位 当指令执行结果的低8位中含有偶数个1时 PF为1 否则为0 AF AuxiliaryFlag 辅助进位标志位 当执行一条加法或减法运算指令时 若结果的低字节的低4位向高4位有进位或借位 则AF为1 否则为0 ZF ZeroFlag 零标志位 若当前的运算结果为0 则ZF为1 否则为0 SF SignFlag 符号标志位 当运算结果的最高位为1时 SF 1 否则为0 OF OverflowFlag 溢出标志位 当运算结果超出了带符号数所能表示的数值范围 即溢出时 OF 1 否则为0 用来判断带符号数运算结果是否溢出 0101010000111001 01000101011010101001100110100011最高位 1SF 1低8位中偶数为4个PF 1运算结果不为0ZF 0低4位向前有进位AF 1最高位向前没有进位CF 0次高位向前有进位Cs 0 Cp 1 OF CsCp 1 1514131211109876543210 ODITSZAPC 1 0 1 0 1 1 例3 1设变量x 11101111B y 11001000B X 0101101000001010B Y 0100110010100011B 请问分别执行x y和X Y操作后标志寄存器中各状态位的状态如何 2 控制标志位 3位 用来控制CPU的操作 由程序设置或清除 它们是 TF TrapFlag 跟踪 陷阱 标志位 是为测试程序的方便而设置 若将TF置1 CPU处于单步工作方式 IF InterruptFlag 中断允许标志位 是用来控制可屏蔽中断的控制标志位 若将IF置1 表示允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求 若用CLI指令将IF清0 则禁止CPU接受可屏蔽中断请求信号 DF DirectionFlag 方向标志位 若将DF置1 串操作按减地址方式进行 也就是说 从高地址开始 每操作一次地址自动递减 否则按增地址方式进行 3 2 3总线周期的概念 引脚介绍后再讲 为了便于对8086 8088CPU引脚功能的说明 本节简要介绍总线周期的概念 8086 8088CPU在与存储器或I O端口交换数据时需要启动一个总线周期 按照数据的传送方向来分 总线周期可分为 读 总线周期 CPU从存储器或I O端口读取数据 和 写 总线周期 CPU将数据写入存储器或I O端口 8086 8088CPU基本的总线周期由4个时钟周期组成 如图3 6所

温馨提示

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

评论

0/150

提交评论