1.4k likes | 1.79k Views
第四章. 典型的 CPU 及指令系统. 内容简介. IBM PC 系列微型机及兼容机是国内外应用最广泛的微型计算机。 IBM PC 微机的 CPU 采用 Intel 8088 或 Intel 8086 微处理器。本章先介绍 8086/8088CPU 的内部结构、主存储器组织以及堆栈结构,然后讲解 8086/8088 指令系统的寻址方式和指令功能。. 学习目标. ☻ 理解 8086/8088CUP 的寄存器结构、主存储器、堆栈结构。 ☻ 掌握 8086/8088 指令系统的寻址方式。 ☻ 理解 8086/8088 指令类型。
E N D
第四章 典型的CPU及指令系统
内容简介 • IBM PC系列微型机及兼容机是国内外应用最广泛的微型计算机。IBM PC微机的CPU采用Intel 8088或Intel 8086微处理器。本章先介绍8086/8088CPU的内部结构、主存储器组织以及堆栈结构,然后讲解8086/8088指令系统的寻址方式和指令功能。
学习目标 • ☻理解8086/8088CUP的寄存器结构、主存储器、堆栈结构。 • ☻掌握8086/8088指令系统的寻址方式。 • ☻理解8086/8088指令类型。 • ☻了解提高CPU性能的一些措施与当前常用的实际CPU基本组成。
学习建议 • 8086/8088指令系统的寻址方式是本章的重点内容,指令主要是通过不同的寻址方式去存取操作数,它们是理解指令功能和编程的基础。同学们在学习时,应注意各种寻址方式的特点和应用场合。
第四章的内容章节 • 4.1、8086/8088CPU • 4.2、主存贮器 • 4.3、8088/8086堆栈 • 4.4、8088/8086指令系统 • 4.5、提高CPU性能的一些措施
IBM公司于1981年8月12日所推出的第一台IBM PC——5150 1985年,中国自行研制成功了第一台微型计算机,长城的0520
————8086/8088CPU 8088/8086
————8086/8088CPU 8088/8086
8088/8086 ————8086/8088CPU
————8086/8088CPU IBM公司于1981年8月12日所推出的第一台PC机的主板图
4、1 8086/8088CPU • 8086CPU是16位微处理器,即CPU的内外数据总线为16位,一个总线周期可以传送一个字(16位)数据。而8088是准16位微处理器,其CPU内部总线为16位,外部总线为8位,因此一个总线周期只能传送一个字。
4.1、8086/8088CPU(概述) 相同点: 都是16位机,外部地址线都是20条。 内部结构基本相同
————8086/8088CPU 4.1、8086/8088CPU 不同点: 最主要的区别就是系统总线中的数据线8086是16位,而8088地址线是8位。 此外,8088/8086都是16位宽度的计算机 但常常称8088是准16位机
————8086/8088CPU 4.1.1、8086/8088CPU的结构 1.8086/8088的内部结构 流水线式的取指-执行
8086/8088 CPU采用了一种较先进的指令流水线结构,将取指令(或取操作数)与执行指令的功能分别由两个独立部件实现,即总线接口部件BIU(bus interface unit)与执行部件EU(execute unit)。因此,当EU执行某条指令时,BIU同时完成从主存中预取后继指令,两个部件并行的工作,使指令的读取与执行可以部分重叠,从而提高了指令的执行速度。
1.EU 2.BIU ————8086/8088CPU
16为算术逻辑运算部件ALU 一组通用寄存器 执行部件EU 暂存器 标志寄存器 EU控制器
————8086/8088CPU 1.8086/8088的内部结构 1.EU(Execute Unit) • 从指令队列里取出指令代码,由EU控制器进行译码后产生对应的控制信号到各部件以完成指令规定的操作 • 对操作数进行算逻运算,并将运算结果的特征状态存放在标志寄存器中 • 由于EU不直接与系统总线连接,由此当需要与主存储器或I/O端口传送数据时,EU向BIU发出命令,并提供给BIU16位有效地址与传送的数据
段寄存器 指令指针 BIU 6字节的指令队列(8088是4字节) 20位地址形成部件 总线控制逻辑
————8086/8088CPU 1.8086/8088的内部结构 2.BIU(Bus Interface Unit) • 从主存取出指令送到指令队列中排队 • 从主存或I/O端口取操作数或存放运算结果 • 计算并形成访问贮存的20位物理地址
————8086/8088CPU 2. 8086/8088主存地址的形成 先给大家学习以下计算机科学中的量词 210=1024=1K 220=1024K=1M 230=1024M=1G 我们学习的8088/8086有20根地址线,可以将主存储器编上220个内存单元,即1M内存,即使有多于1M内存的内存,对于8088/8086来说,也是浪费。
2. 8086/8088主存地址的形成 现在有一个问题,20根地址线需要一次提供20个信号,但是我们的计算机是16位宽度,16位的CPU宽度如何由CPU提供20位的地址信号呢? ? 16位 20位 ————8086/8088CPU
2. 8086/8088主存地址的形成 其实答案很简单,一个寄存器的宽度是16位,两个寄存器不就是32为宽度了吗 我们没有用两位寄存器并在一起来提供32位的信号,而让一个20位的寄存器和一个16为寄存器进行加法来得到一个20位的地址信号 ————8086/8088CPU
2. 8086/8088主存地址的形成 ————8086/8088CPU
2. 8086/8088主存地址的形成 ————8086/8088CPU
2. 8086/8088主存地址的形成 我们把提供一个20位地址的两个寄存器中的值分别称之为: 20位寄存器中的值称之为段基址(Segment base value) 16位寄存器中的值称之为偏移量(Offset)或有效地址(Effective address) 段基址是由四个段寄存器提供20位的高16位,低四位补0形成的 偏移量是由CPU内的EU部分提供的 ————8086/8088CPU
————8086/8088CPU 1.段寄存器 2.通用寄存器 (1)地址指针寄存器 (2)数据寄存器 3.用于控制的寄存器 (1)指令指针IR (2)标志寄存器FR
————8086/8088CPU 1.段寄存器
2、通用寄存器(General Register) (1)地址寄存器(Address Pointer Register) 堆栈指针寄存器SP 基址指针寄存器BP 源变址寄存器 SI 目的变址寄存器DI
2.通用寄存器 (2)数据寄存器 AX,BX,CX,DX ————8086/8088CPU
————8086/8088CPU (1)地址指针寄存器 (2)数据寄存器 2.通用寄存器
————8086/8088CPU 3.用于控制的寄存器--(1)指令指针IR
3.用于控制的寄存器(2)标志寄存器FR ————8086/8088CPU
3.用于控制的寄存器 (2)标志寄存器FR • 进位标志位CF(Carry Flag) • 奇偶标志位PF(Parity Flag) • 辅助进位标志位(Auxiliary Flag) • 零值标志位(Zero Flag) • 符号标志位SF(Sign Flag) • 溢出标志位OF(Overflow Flag) • 单步(跟踪)标志位TF(Trae Flag) • 中断标志位IF(Interrupt –enable Flag) • 方向标志位DF(Direction Flag) ————8086/8088CPU
4.2、主存储器 4.2.1 8086/8088主存储器的特点 4.2.2 主存储器的段结构 4.2.3 逻辑地址与物理地址 1.逻辑地址 2.物理地址 3.逻辑地址的来源
4.2.3 逻辑地址与物理地址 1.逻辑地址 段基值:偏移量 2.物理地址=段基值左移4位+偏移量 =段基值*10+偏移量 3.逻辑地址的来源
4.3 8086/8088堆栈 4.3.1堆栈组织 堆栈指针SP是16位的寄存器,所以堆栈的最大深度是64k个字节,最多存放32个字。 8086/8088堆栈规定以字(2个字节)为单位进行存取,字数据在堆栈中的存放格式是底字节在低地址单元,高字节在高地址单元。
4.3.2堆栈操作 : STACK1 SEGMENT PARA STACK DB 40H DUP(0) STACK1 ENDS : 1.压栈 2.出栈
1、压栈 • 用压栈指令PUSH可以将通用寄存器、段寄存器或字存储单元内容压入堆栈。 • PUSH AX • PUSH DS • PUSH DATAW • PUSHF
2、出栈 • 用弹出指令POP可以将当前栈顶字单元内容取出送到通用寄存器、段寄存器或字存储单元中。 • POP AX • POP DS • POP DATAW • POPF
堆栈操作-1.压栈 2.出栈