
微处理器与总线.ppt
62页本次课主要内容2.2 8088/8086微处理器 (重点)◇8088/8086CPU的功能结构 (书2.2.3)◇ 8088/8086CPU的存储器组织 (书2.2.4)第2章 微处理器与总线微处理器与总线小结小结第2章:教学要求2.2 (重点) 8088/8086微处理器– 8088/8086CPU功能结构 (书2.2.3) – 8088/8086CPU存储器组织 (书2.2.4) – 8088CPU外部引脚及其功能 (书2.2.2) – 8088/8086CPU工作时序 (书2.2.5) 2.3 2.4 (一般了解) 80386, Pentium微处理器2.5 总线第2章 微处理器与总线微处理器与总线本章教学重点 8088内部寄存器 、存储器组织 、最小组态下的引脚定义上次课回顾上次课回顾 ----------与前面所学知识的衔接与前面所学知识的衔接汇编语言程序员看到的硬件•中央处理单元 CPU(Intel 80x86)对汇编语言程序员,最关心其中的寄存器 •内存(主存储器 )呈现给汇编语言程序员的,是主存储器地址•存储器地址是存储器中存储单元的编号 •外部设备(接口电路) 汇编语言程序员看到的是端口(I/O地址)I/O 接 口内存系统总线CPU寄存器控制器运算器辅助存储器输入设备输出设备微型计算机的系统组成CPUCPU CPU CPU MOV AL,DLMOV AL,DL CPU CPU 内存内存 MOV AL,ES:[5678H]MOV AL,ES:[5678H] CPU I/OCPU I/O接口接口 ININ AL,56H AL,56H上次课回顾结束上次课回顾结束返回一. 8086CPU功能结构◆ 8086的内部结构◆ 8086的寄存器结构1. 通用寄存器(8个)2. 指令指针寄存器 IP3. 标志寄存器 PSW从应用角度(不是从 内部工作原理)展开 为学习指令系统打好 基础例如:关心用户“可编程”寄存器, 不关心无法操纵的“透明”寄存器1. 8086CPU内部结构• 8088的基本组成• 8088的内部结构从功能上分成两个单元1. 总线接口单元BIU 管理8088与系统总线的接口 负责CPU对存储器和外设进行访问 2. 执行单元EU 负责指令的译码、执行和数据的运算•两个单元相互独立,分别完成各自操作,还可以并行执行,实现指令预取(指令读取和执行的流水线操作) 1.算术逻辑单元ALU(运算器)2.寄存器组3.指令处理单元(控制器)图示8086的内部结构1 2 3 4 5 6内部寄存器IPESSSDSCS输入/输出 控制电路外部总线执行部分 控制电路ALU标志寄存器AX AH AL SPBPSIDI通用寄存器地址加法器指令队列执行单元 (EU)总线接口单元 (BIU)16位20位地址总线16位BX BH BL DX DH DL CX CH CL ALU数据总线2. 8088/8086的内部寄存器• 8086的内部寄存器组有– 数据寄存器 – 指针寄存器 通用寄存器 – 变址寄存器 – 指令指针寄存器 – 状态标志寄存器 – 段寄存器 他们均为16位!图示汇编语言程序员看到的处理器,就是寄存器所以,一定要熟悉这些寄存器的名称和作用(1)数据寄存器• AX称为累加器(Accumulator) 使用频度最高。
用于算术、逻辑运算以及与外设传送信息等 • BX称为基址寄存器(Base address Register) 常用做存放存储器地址 • CX称为计数器(Counter) 作为循环和串操作等指令中的隐含计数器 • DX称为数据寄存器(Data register) 常用来存放双字长数据的高16位,或存放外设端口地址 • 4个数据寄存器还可以分成高8位和低8位两个独立的寄存 器,这样又形成8个通用的8位寄存器 AX: AH ALBX: BH BL CX: CH CLDX: DH DL(2)指针寄存器• 指针寄存器用于寻址内存堆栈内的数据 –SP为堆栈指针寄存器(Stack Pointer),指示堆栈段栈 顶的位置(偏移地址) –BP为基址指针寄存器(Base Pointer),表示数据在 堆栈段中的基地址• SP和BP寄存器与SS段寄存器联合使用以确定堆栈 段中的存储单元地址堆栈(Stack)是主存中一个特殊的区域,采 用“先进后出”或“后进先出”存取操作方式、而 不是随机存取方式 用8088/8086形成的微 机系统中,堆栈区域被称为堆栈段(3)变址寄存器• 16位变址寄存器SI和DI• 常用于存储器变址寻址方式时提供地址 – SI是源地址寄存器(Source Index) – DI是目的地址寄存器(Destination Index) • 在串操作类指令中,SI、DI还有较特殊的用法现在不必完全理解,以后会详细展开(4) 指令指针寄存器 IP• IP(Instruction Pointer)为指令指针寄存器, 用来控制CPU指令执行顺序• 随着指令的执行,IP将自动修改以指示下一条指 令所在的内存地址。
顺序执行时,CPU每取一个指 令字节,IP自动加1,指向下一个要读取的字节• IP寄存器与CS段寄存器联合使用以确定下一条指 令的内存地址5) 状态标志寄存器 (PSW程序状态字)• 存放cpu工作过程中状态,即反映指令执行结果或控制指 令执行形式 • 8088处理器的各种标志形成了一个16位(用9位)的状态 标志寄存器PSW – 状态标志--用来记录程序运行结果的状态信息,许多指令的执行 都将相应地设置它 C Z S P O A – 控制标志--可由程序根据需要用指令设置,用于控制处理器执行 指令的方式 D I TO1115 12 D10 I9 T8 S7 Z65 A43 P21 C0程序设计需要利用标志的状态进位标志C(Carry Flag)• 当运算结果的最高有效位有进位(加法)或借位(减 法)时,进位标志置1,即C=1;否则C=03AH + 7CH=B6HAAH + 7CH=(1)26H没有进位:C = 0有进位:C = 1奇偶标志P(Parity Flag)• 当运算结果低8位中“1”的个数为零或偶数 时,P=1;否则P=03AH+7CH=B6H=P标志仅反映最低8位中“1”的个数是 偶或奇,即使是进行16位字操作10110110B结果中有5个“1”,是奇数:P=0半加标志位(辅助进位)A(Auxiliary Carry Flag)这个标志主要用于对BCD运算结果 的调整,由处理器内部使用,用户 一般不必关心Ø运算时低半字节(D3向D4)有进位(加法 )或借位(减法)时,A=1;否则A=0零标志Z(Zero Flag)• 若运算结果为0,则Z=1;否则Z=03AH+7CH=84H+7CH=注意:Z为1表示运算结果是0B6H,结果不是零:Z= 0(1)00H,结果是零:Z=1符号标志S(Sign Flag)• 运算结果最高位为1,则S=1;否则S=03AH+7CH=B6H,最高位D7=1:S=184H+7CH=(1)00H,最高位D7=0:S=0有符号数据用最高有效位表示数据的符号 所以,最高有效位就是符号标志的状态陷阱标志位T(Trap Flag)(单步标志位)• 用于控制CPU进入单步操作方式。
通常用于 程序调试 – 设置TF=0,处理器正常工作; – 设置TF=1,处理器单步执行指令中断允许标志位I(Interrupt-enable Flag)• 控制CPU是否响应可屏蔽中断请求– 设置I=1,则允许中断; – 设置I=0,则禁止中断ØCLI指令复位中断标志:I=0ØSTI指令置位中断标志:I=1方向标志位D(Direction Flag)• 用于串操作指令,控制地址的变化方向: – 设置D=0,存储器地址自动增加; – 设置D=1,存储器地址自动减少ØCLD指令复位方向标志:D=0ØSTD指令置位方向标志:D=1溢出标志位O(Overflow Flag)• 若算术运算的结果有溢出,则O=1;否则 O=0什么是溢出 • 处理器内部以补码表示有符号数 • 8位有符号数表达的整数范围是:+127 ~ -128 16位表达的范围是:+32767 ~ -32768 • 如果运算结果超出这个范围,就产生了溢出 • 有溢出,说明有符号数的运算结果不正确溢出举例分析:3AH+7CH=B6H,就是58+124=182, 已经超出-128~+127范围,产生溢出,故OF=1; 补码B6H表达真值是-74,显然运算结果也不正确• B6H=10110110B,最高位为1, 作为有符号数是负数 • 对B6H求反加1等于: 01001001B+1=01001010B=4AH=74 • 所以,B6H表达有符号数的真值为-743AH + 7CH =B6H,产生溢出:OF=1溢出的简单判断法• 只有当两个同符号数相加(包括不同符号数相减),而运 算结果的符号与原数据符号相反时,产生溢出;因为,此 时的运算结果显然不正确• 其他情况下,则不会产生溢出例1:3AH+7CH=B6H 例2:AAH+7CH 例3:3AH-7CH 例4:AAH-7CH=2DH溢出 无溢出 无溢出 溢出PSWPSW小结小结(6)段寄存器• 8088有4个16位段寄存器– CS(代码段)指明代码段的起始地址 – SS(堆栈段)指明堆栈段的起始地址 – DS(数据段)指明数据段的起始地址 – ES(附加段)指明附加段的起始地址• 每个段寄存器用来确定一个逻辑段的起始地址, 每种逻辑段均有各自的用途返回二.存储器组织 • 问题一:寄存器、存储器(内存)、外存都用于存储信息,为何仅讨 论CPU的存储器寻址? 解答:存储器可直接与CPU进行数据交换• 问题二:16位寄存器如何能寻址1M内存空间? 解答:内存空间分段,逻辑地址/物理地址转换 • 问题三: CPU如何实现存储器寻址? 解答: CPU总线接口单元1.存储器寻址功能2.存储器的分段管理3.物理地址和逻辑地址4.段寄存器及逻辑段分配5. CPU存储器结构6. 存储器数据的存储格式Memory AddressingMemory Addressing存储器寻址存储器寻址 --- CPU--- CPU的存储器结构的存储器结构问题1问题2问题31.存储器寻址的功能 (Function of Memory Addressing)• 功能 Addressing Data in MEMORY • 存储器(内存)是计算机存储信息的地方。
可直接与CPU进 行数据交换 • 掌握数据存储格式,以及存储器的分段管理对以后的汇编 程序设计非常重要寄存器 存储器 外存 CPU 寄存器、存储器(内存)、外存区别?寄存器、存储器和外存的区别• 寄存器是微处理器(CPU)内部暂存数据的存储单元,以 名称表示,例如:AX,BX….等• 存储器也就是平时所说的主存,也叫内存,可直接与CPU 进行数据交换主存利用地址区别• 外存主要指用来长久保存数据的外部存储介质,常见的有 硬盘、光盘、磁带、U盘等外存的数据只能通过内存间 接地与CPU交换数据• 程序及其数据可以长久存放在外存,在运行需要时才进入 主存2. 存储器的分段管理• 8088CPU访问内存有20条地址线 – 共 220B=1MB个存储单元FFFFFH,内存地址00000H~FFFFFH • 8088CPU将1MB空间分成许多段,有4个16位段寄存器,对 应4种逻辑段. – Code Segment 代码段 – Stac。
