微机原理3-1ppt课件_第1页
微机原理3-1ppt课件_第2页
微机原理3-1ppt课件_第3页
微机原理3-1ppt课件_第4页
微机原理3-1ppt课件_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

第三章微处理器及其系统 微型计算机原理及应用 主编 李继灿 清华大学出版社 2 引言 微型计算机系统 硬件系统 微机 软件系统 微处理器 CPU 主存储器 算术逻辑部件 外设 控制器 应用软件 微型计算机系统的组成 系统软件 寄存器 I O接口 键盘 鼠标 显示器 硬盘 光盘 打印机等 3 内容提要 3 3存储器 3 2最小 最大工作方式 3 18086 8088微处理器 3 4指令系统 3 5微处理器 4 3 180X86微处理器 80X86是Intel公司生产的微处理器系列 微处理器 把运算器和控制器集成到一个芯片 微计算机系统 把微处理器芯片作为中央处理机 CPU 配上存储器 输入输出设备和系统软件构成微计算机系统 如 由80386微处理器芯片构成的微机称为386微机 由P4微处理器芯片构成的微机称为P4微机 5 3 1 0Intel微处理器发展概述 1968年 罗伯特 诺伊斯 RobertNoyce 戈登 摩尔 GordonMoore 和安迪 格鲁夫 AndyGrove 在硅谷共同创立了英特尔公司 OnlytheParanoidSurvive AndyGrove 了解 6 3 1 0Intel微处理器发展概述 1 第1代微处理器 Intel4004 4040 4位微处理器 1971 Intel8008 低档8位微处理器 1972 2 第2代微处理器 Intel8080 8085 8位微处理器 1974 指令比较完善 有了中断与DMA汇编 BASIC FORTRAN Intel4004 Intel8085 了解 7 3 第3代微处理器 Intel8086 16位微处理器 1978 数据总线16位 地址总线20位Intel8088 准16位微处理器 1979 外部数据总线8位 内部数据总线16位IBMPC 1981 IBMPC XTIntel80286 高档16位微处理器 1982 数据总线16位 地址总线24位IBMPC AT实地址模式 虚地址保护模式虚地址模式可寻址16MB物理地址和1GB的虚拟地址 3 1 0Intel微处理器发展概述 了解 8 3 1 0Intel微处理器发展概述 了解 9 Intel公司生产的80 x86 10 3 1 1内部结构 1 算术逻辑部件ALU 执行算术和逻辑运算 2 控制器 负责对全机的控制 3 寄存器 处理器中临时存储数据的基本逻辑部件 CPU的任务 执行存放在存储器中的指令序列 CPU的组成 运算器 控制器 高速缓存 386开始 CPU功能 取指令 分析指令 执行指令 11 中央处理机CPU的物理组成 8086 8088由两部分组成总线接口单元BIU功能 取指令 取操作数 保存结果执行单元EU功能 执行指令 总线接口单元 地址总线 数据总线 系统总线 主存储器 控制总线 I O接口 I O接口 I O设备 I O设备 执行单元 CPU 12 内部暂存器 IP ES SS DS CS 输入 输出控制电路 外部总线 执行部分控制电路 123456 ALU 标志寄存器 AHAL BHBL CHCL DHDL BP SI DI SP 地址加法器 指令队列缓冲器 执行部件 EU 总线接口部件 BIU 16位 20位 16位 Intel8086处理器的内部结构框图 16位内部数据总线 20位地址线 8位 DB AB 13 一 总线接口单元BIU总线接口单元BIU的功能是负责完成CPU与存储器或I O设备之间的数据传送 其具体任务是 BIU要从内存取指令送到指令队列缓冲器 CPU执行指令时 总线接口单元要配合执行单元从指定的内存单元或者外设端口中取数据 将数据传送给执行单元 或者把执行单元的操作结果传送到指定的内存单元或外设端口中 BIU内有4个16位段地址寄存器CS 代码段寄存器 DS 数据段寄存器 SS 堆栈段寄存器 和ES 附加段寄存器 16位指令指针IP 6字节指令队列缓冲器 20位地址加法器和总线控制电路 14 1 指令队列缓冲器 8086的指令队列为6个字节 而8088的指令队列为4个字节 在执行指令的同时 从内存中取下面1条或几条指令 取来的指令依次放在指令队列中 先进先出 的原则 1 取指时当指令队列缓冲器中存满1条指令后 EU执行 2 指令队列缓冲器中只要空出2个 对8086 或空出1个 对8088 指令字节时 BIU自动执行取指操作 直到填满 15 3 在EU执行指令的过程中 指令需要对存储器或I O设备存取数据时 BIU将在执行完现行取指的存储器周期后的下一个存储器周期 对指定的内存单元或I O设备进行存取操作 交换的数据经BIU由EU进行处理 4 当EU执行完转移 调用和返回指令时 则要清除指令队列缓冲器 并要求BIU从新的地址重新开始取指令 新取的第1条指令将直接经指令队列送到EU去执行 随后取来的指令将填入指令队列缓冲器 16 2 地址加法器和段寄存器 8086有20根地址线 内部寄存器有16位 采用了16位的段寄存器与16位的偏移地址即 段加偏移 的技术 利用各段寄存器分别来存放确定各段的起始地址的16位段地址信息 而由IP提供或由EU按寻址方式计算出寻址单元的16位偏移地址 又称为逻辑地址或简称为偏移量 然后 将它与左移4位后的段寄存器的内容同时送到地址加法器进行相加 最后形成一个20位的实际地址 又称为物理地址 以对存储单元寻址 17 3 16位指令指针IP InstructionPointer 其功能与8位CPU中的PC类似 正常运行时 IP中含有BIU要取的下1条指令 字节 的偏移地址 IP在程序运行中能自动加1修正 使之指向要执行的下1条指令 字节 有些指令能使IP值改变或使IP值压进堆栈 或由堆栈弹出恢复原值 18 执行单元EU并不与系统的总线控制电路直接相连 这使得它能与总线接口单元之间保持既相互联系又相互独立的关系 功能只是负责执行指令 执行的指令从BIU的指令队列缓冲器中取得 执行指令的结果或执行指令所需要的数据 都由EU向BIU发出请求 再由BIU经总线控制电路对存储器或外设存取 EU由下列部分组成 二 执行单元EU 19 1 16位算术逻辑单元 ALU 它可以用于进行算术 逻辑运算 也可以按指令的寻址方式计算出寻址单元的16位偏移量 2 16位标志寄存器F 它用来反映CPU运算的状态特征或存放控制标志 3 数据暂存寄存器 它协助ALU完成运算 暂存参加运算的数据 4 通用寄存器组 它包括4个16位数据寄存器AX BX CX DX和4个16位指针与变址寄存器SP BP与SI DI 20 5 EU控制电路 它是控制 定时与状态逻辑电路 接收从BIU中指令队列取来的指令 经过指令译码形成各种定时控制信号 对EU的各个部件实现特定的定时操作 EU中所有的寄存器和数据通道 除队列总线为8位外 都是16位的宽度 可实现数据的快速传送 8088CPU内部结构与8086的基本相似 只是8088BIU中指令队列长度为4个字节 8088BIU通过总线控制电路与外部交换数据的总线宽度是8位 总线控制电路与专用寄存器组之间的数据总线宽度也是8位 21 3 1 280X86的寄存器结构 重点 可见寄存器应用程序中由指令进行访问的寄存器 通用寄存器 8个段寄存器 4个专用寄存器 2个 22 8086 8088内部寄存器 AH AX AL 累加寄存器 BH BX BL 基址寄存器 CH CX CL 计数寄存器 DH DX DL 数据寄存器 SP 堆栈指针寄存器 BP 基址指针寄存器 SI 源变址寄存器 DI 目的变址寄存器 8个16位通用寄存器 4个16位段寄存器 CS 代码段寄存器 DS 数据段寄存器 SS 堆栈段寄存器 ES 附加段寄存器 2个16位控制寄存器 IP 指令指针寄存器 FR 标志寄存器 按照功能分类 将14个内部寄存器分为三组 数据寄存器 掌握 23 1 通用寄存器 AX accumulator 累加器 算术运算 乘除指令中指定存放操作数 I O指令使用AX与外设传送信息BX base 基址寄存器 除通用外 计算存储器地址时 用作基址寄存器CX count 计数器 除通用外 保存计数 移位 循环等指令中的计数器 DX data 数据寄存器 除通用外 在双字长运算中 DX和AX组合保存双字长数 DX存放高16位 或存放外设端口地址特点 可作16位寄存器使用 也可拆成2个独立的8位寄存器具有良好的通用性 在程序中即可存放操作数 也可存放操作结果 1 数据寄存器 掌握 24 数据寄存器举例 例如 在指令中指明使用ADDAX BXMOVBL AL例如 在指令中特定使用CLSHLAX CL 逻辑左移 CL 位例如 在指令中隐含使用ALMULBL 无符号乘法 AX AL BL 25 2 指针及变址寄存器 变址寄存器 存储器寻址时 与数据段寄存器联用 提供偏移地址 只能以字的形式访问 SI SourceIndex 源变址寄存器DI DestinationIndex 目的变址寄存器指针寄存器 SP StackPoint 堆栈指针寄存器 存放堆栈段中栈顶单元的偏移量BP BasePoint 基址指针寄存器 存放堆栈段中某个单元的全部 部分偏移量 也可存放16位操作数或结果 也可用于存放操作数 但只能作为16位R使用 掌握 26 3 1 2 2段寄存器 CS 代码段寄存器 对应的段存放指令代码DS 数据段寄存器 对应的段存放数据或变量SS 堆栈段寄存器 对应的段存放栈操作的数据ES 附加段寄存器 对应的段存放数据或变量 存储器是按段进行组织的 段寄存器就是用来存放段基值的 段起始地址的高16位 掌握 27 需执行的程序通常分为4个段 代码段 数据段 堆栈段 附加段 00000 代码段 FFFFFH CS DS SS ES 16位段寄存器 代码段寄存器 数据段寄存器 堆栈段寄存器 附加段寄存器 注意 段寄存器的功能不能互换 数据段 堆栈段 段基址 段基址 段基址 段基址 附加段 28 3 1 2 3专用寄存器 8086 8088 80286 16位寄存器指令指针寄存器IP标志寄存器F80386及其后继机型 了解 32位寄存器指令指针寄存器EIP标志寄存器EFLAGES 29 30 3 1 2 3专用寄存器 IP或EIP IP InstructionPointer 指令指针寄存器IP 指示代码段中指令的偏移地址它与代码段寄存器CS联用 确定下一条指令的物理地址物理地址 CS 16D IP 计算机通过CS IP寄存器来控制指令序列的执行流程不能对IP指针直接进行访问 CS IP 0000 CPU 00000H FFFFFH 代码段段基址 偏移量IP 01010010 00010010 正在执行的指令 下一条指令 掌握 31 3 1 2 3专用寄存器 标志寄存器F 标志 Flag 用于反映指令执行结果的情况或控制指令的执行方式又称程序状态字寄存器 programstatusword PSW 32 1 条件 状态 标志记录程序运行结果的状态信息 主要包含 符号标志SF 零标志ZF 辅助进位AF 奇偶标志PF 进位标志CF 溢出标志OF 2 控制标志方向标志DF 用于串处理指令 3 系统标志 中断允许标志IF IF 1 CPU允许中断 否则关闭中断 陷阱 或跟踪 标志TF TF 1 机器进入单步工作方式 TF 0 机器处于连续工作方式 3 1 2 3标志寄存器 OFDFIFTFSFZFAFPFCF 掌握 33 例某CPU内含8位运算器 则 参加运算的数及结果均以8位表示 最高位产生的进位或借位在8位运算器中不保存 而将其保存到标志寄存器中 掌握 34 进位标志CF CarryFlag 记录运算时从最高有效位 字节第7位 字第15位 产生的进 借位值 例如 执行指令 ADDAL BL3AH 7CH B6H 没有进位 CF 0AAH 7CH 1 26H 有进位 CF 1 掌握 35 溢出标志OF OverflowFlag 算术运算中 带符号数的运算结果超出了8位或16位带符号数能表达的范围 则OF 1 否则OF 0 8位 字节 运算 128 12716位 字 运算 32768 32767即 表明补码的运算结果是否有溢出 例 执行指令 ADDAL BL3AH 7CH B6H 产生溢出 OF 1AAH 7CH 1 26H 没有溢出 OF 0 掌握 36 溢出和进位的比较 溢出标志OF和进位标志CF是两个意义不同的标志进位标志表示无符号数运算结果是否超出范围 运算结果仍然正确 溢出标志表示有符号数运算结果是否超出范围 如溢出 运算结果已经不正确 掌握 37 如何运用溢出和进位 处理器对两个操作数进行运算时 按照无符号数求得结果 并相应设置进位标志CF 同时 根据是否超出有符号数的范围设置溢出标志OF 规则1 当同号操作数相加并且结果符号与加数相反时 OF 1正 正 负负 负 正当同号操作数相减时 OF 0当异号操作数数相加时 OF 0当异号操作数相减时 可看作同号操作数相加 根据规则1判断应该利用哪个标志 则由程序员来决定 操作数是无符号数 应该关心进位标志CF 操作数是有符号数 要注意溢出标志OF 掌握 38 例1 8位加法3AH 7CH CF 0OF 1 溢出和进位的比较 00111010 3AH 01111100 7CH 10110110 B6H 无符号数运算58D 124D 182D B6H无进位范围内结果正确 有符号数运算58D 124D 182DB6H 01001001B 73D有溢出结果不正确 39 例2 AAH 7CH AAH 100110017CH 01111100和 1 00010101 26H CF 1OF 0 溢出和进位的比较 无符号数运算170 124 294 126H 有进位范围外结果需要修正 有符号数运算 86 124 38 26H无溢出范围内结果正确 40 若运算结果为0 则ZF 1 否则ZF 0 例 执行指令 ADDAL BL 3AH 7CH B6H 结果不是零 ZF 084H 7CH 1 00H 结果是零 ZF 1 注意 ZF 1表示结果 0 零标志ZF ZeroFlag 掌握 41 符号标志SF SignFlag 表明有符号数运算结果的正负 有符号数据用最高有效位表示数据的符号 所以 最高有效位就是符号标志的状态 3AH 7CH B6H 最高位D7 1 SF 184H 7CH 1 00H 最高位D7 0 SF 0 掌握 42 奇偶标志PF ParityFlag 表明运算结果最低字节中1的个数的奇偶 例 3AH 7CH B6H 10110110B结果中有5个1 是奇数 PF 0 即使进行16位字操作 PF标志仅反映最低8位中 1 的个数是偶或奇 掌握 43 辅助进位标志AF 记录运算时低8位中低4位 低半字节 向高4位有无进位或借位 3AH 7CH B6H D3有进位 AF标志主要由处理器内部使用 用于十进制算术运算调整指令中 用户一般不必关心 00111010 0111110010110110 1 掌握 44 方向标志DF DirectionFlag 用于串操作指令中 控制地址的变化方向 当DF 1时 每次操作后变址寄存器SI和DI减小当DF 0时 每次操作后变址寄存器SI和DI增大CLD指令复位方向标志 DF 0STD指令置位方向标志 DF 1 掌握 45 中断允许标志IF 用于开中断或屏蔽中断 CLI指令复位中断标志 IF 0STI指令置位中断标志 IF 1 掌握 46 陷阱标志TF TrapFlag 用于控制处理器进入单步操作方式 单步执行指令 处理器在每条指令执行结束时 便产生一个编号为1的内部中断这种内部中断称为单步中断所以TF也称为单步标志利用单步中断可对程序进行逐条指令的调试这种逐条指令调试程序的方法就是单步调试 47 在调试程序时 DEBUG提供了测试标志位的手段 用符号表示标志位的值 每种标志位的符号如下表 DEBUG不提供TF的符号 用于单步方式操作 48 例题 m 00111011B n 01001010B 完成下列运算后 SF ZF PF CF AF OF标志位的状态 1 m n 2 m n 1 m n00111011 0100101010000101 符号SF 零ZF 奇偶PF 进位CF 辅助进位AF 溢出OF 1 0 0 0 1 1 2 m n00111011 0100101011110001 SF ZF PF CF AF OF 1 0 0 1 0 0 49 AHAL BHBL CHCL DHDL SP BP DI SI IP FLAGS CS DS ES SS FS GS 32位 16位 32位名称 16位名称 通用名称 AX累加器 BX基址变址 CX计数 堆栈指针 DX数据 基址指针 目的变址 源变址 指令指针 标志 代码段 数据段 附加段 堆栈段 EAX EBX ECX EDX ESP EBP EDI ESI EIP EFLAGS 注 1 8086 8088或80286CPU 图中阴影区寄存器不存在 2 FS和GS寄存器无专用名称 小结 无专用名称 80 x86的程序可见寄存器组 50 对任何一个微处理器来说 为了从存储器中取得指令或者与之传送数据 都需要它的总线接口单元执行一个总线周期 同时 以后我们会知道 在微机系统中 当选择一个存储器或I O设备与微处理器接口之前 也必须了解系统总线的所谓时序 而这些时序也是以总线周期为基准来描述的 因此 在这里有必要介绍一下有关总线周期的概念 通常 包括8086 8088CPU在内 一个最基本的总线周期由4个时钟周期组成 时钟周期是CPU的基本时间计量单位 它由CPU的主频决定 在一个最基本的总线周期中 习惯上将4个时钟周期分别称为4个状态 即T T T 与T 这4个状态 3 1 3总线周期的概念 51 下面以8086 8088CPU为例 简要说明CPU在4个状态中的基本作用 在T 状态 CPU往多路复用总线上发送地址信息 以选中所要寻址的存储单元或外设端口的地址 在T 状态 CPU从总线上撤消地址 并使总线的低16位浮置成高阻状态 为传送数据做准备 总线的高4位 A A 用来输出本总线周期状态信息 这些状态信息用来表示CPU是否允许中断 当前正在使用什么段寄存器等 在T 状态 多路总线的高4位继续提供状态信息 而其低16位 对8088CPU则为低8位 上将出现由CPU写出的数据或者CPU从存储器或端口读入的数据 52 在有些情况下 由于外设或存储器的速度较慢 不能及时地配合CPU传送数据 这时 外设或存储器就会通过 READY 的信号线在T3状态启动之前向CPU发一个 数据未准备好 信号 表示它们还来不及同CPU之间传送数据 于是 CPU会在T3之后自动插入1个或多个附加的时钟周期Tw 这个Tw就叫等待状态 它表示此时CPU在总线上的信息情况和T3状态时的信息情况一样 只有在指定的存储器或外设已经完成数据传送时 它们又通过 READY 的信号线向CPU发出一个 准备好 信号 当CPU接收到这一信号后 才会自动脱离Tw状态而进入T4状态 在T 状态 总线周期结束 53 只有当CPU和存储器或I 0接口之间传送数据时 或者它正在填充指令队列缓冲器时 CPU才执行总线周期 如果CPU在执行一个总线周期之后 并不立即执行下一个总线周期 那么 系统总线就会处于空闲状态 此时 CPU将执行空闲周期 在空闲周期中 可以包含1个或多个时钟周期 在此期间 CPU在总线的高4位上仍将驱动前一个总线周期的状态信息 而且 如果前一个总线周期为写周期 则CPU会在总线的低16位上继续驱动数据信息 如果前一个总线周期为读周期 则在空闲周期中 总线低16位会处于高阻状态 54 3 1 48086 8088的引脚信号和功能 55 一 地址 数据总线AD15 AD0 56 这是分时复用的存储器或端口的地址和数据总线 传送地址时为单向的三态输出 而传送数据时可双向三态输入 输出 正是利用分时复用的方法才能使8086 8088用40条引脚实现20位地址 16位数据及众多的控制信号和状态信号的传输 不过在8088中 由于只能传输8位数据 所以 只有AD7 AD08条地址 数据线 A15 A8只用来输出地址 57 作为复用引脚 在总线周期的T1状态用来输出要寻址的存储器或I O端口地址 在T2状态浮置成高阻状态 为传输数据作准备 在T3状态 用于传输数据 T4状态结束总线周期 当CPU响应中断以及系统总线 保持响应 时 复用线都被浮置为高阻状态 58 二 地址 状态总线A19 S6 A16 S3 59 地址 状态总线为输出 三态总线 采用分时输出 即T1状态输出地址的最高4位 T2 T4状态输出状态信息 当访问存储器时 T1状态时输出的A19 A16送到锁存器 8282 锁存 与AD15 AD0组成20位的地址信号 而访问I O端口时 不使用这4条引线 A19 A16 0 状态信息中的S6为0用来指示8086 8088当前与总线相连 所以 在T2 T4状态 S6总等于0 以表示8086 8088当前连在总线上 S5表明中断允许标志位IF的当前设置 S4和S3用来指示当前正在使用哪个段寄存器 如下表所示 60 1 高8位数据总线允许 状态复用引脚 三态 输出 BHE在总线周期的T1状态时输出 S7在T2 T4时输出 在8086中 当BHE S7引脚上输出BHE信号时 表示总线高8位AD15 AD8上的数据有效 在8088中 第34引脚不是BHE S7 而是被赋予另外的信号 在最小方式时 它为SS0 在最大方式时 它恒为高电平 S7在8086中未被赋予定义 3 控制总线 61 2 读控制信号 三态 输出 当RD 0时 表示CPU将要执行一个对存储器或I O端口的读操作 对内存单元还是对I O端口读取数据 取决于 8086 或 8088 信号 在一个读操作的总线周期中 RD信号在T2 T3和Tw状态均为低电平 以保证CPU读有效 在执行DMA操作时 RD被浮空 62 3 准备好 信号线 输入 当READY 1时 表示所寻址的内存或I O设备已准备就绪 马上就可进行一次数据传输 CPU在每个总线周期的T3状态开始对READY信号采样 当READY 0 表示存储器或I O设备尚未准备就绪 则CPU在T3状态之后自动插入一个或几个等待状态T

温馨提示

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

评论

0/150

提交评论