510 likes | 778 Views
第二章 8086 微处 理器及其系统结构. 8086 的功能结构 8086 的寄存器组 8086 微处理器引脚信号 8086 微处理器典型时序分析. 8086 微处理器. 微处理器是微机的硬件核心 主要包含指令执行的运算和控制部件,还有多种寄存器 对程序员来说,微处理器抽象为以名称存取的寄存器. 8086 的功能结构. 8086 内部结构有两个功能模块,完成一条指令的取指和执行功能 模块之一:总线接口单元 BIU ,主要负责读取指令和操作数 模块之二:执行单元 EU ,主要负责指令译码和执行. EU 与 BIU 并行但不同步工作,减少了取指令
E N D
第二章 8086微处理器及其系统结构 8086的功能结构 8086的寄存器组 8086微处理器引脚信号 8086微处理器典型时序分析
8086微处理器 • 微处理器是微机的硬件核心 • 主要包含指令执行的运算和控制部件,还有多种寄存器 • 对程序员来说,微处理器抽象为以名称存取的寄存器
8086的功能结构 • 8086内部结构有两个功能模块,完成一条指令的取指和执行功能 • 模块之一:总线接口单元BIU,主要负责读取指令和操作数 • 模块之二:执行单元EU ,主要负责指令译码和执行 • EU与BIU并行但不同步工作,减少了取指令 • 所需的时间,提高了CPU的工作效率。 内部结构 指令执行
第二章 8086微处理器 8086的功能结构 8086的寄存器组 存储器组织与分段管理 堆栈和堆栈操作
8086的寄存器组 • 对汇编语言程序员来说,8086内部结构就是可编程的寄存器组 • 执行单元EU 8个通用寄存器 • 1个指令指针寄存器 • 1个标志寄存器 • 4个段寄存器
8086的通用寄存器 • 8086的16位通用寄存器是: AX BX CX DX SI DI BP SP • 其中前4个数据寄存器都还可以分成高8位和低8位两个独立的寄存器 • 8086的8位通用寄存器是: AH BH CH DH AL BL CL DL • 对其中某8位的操作,并不影响另外对应8位的数据
数据寄存器 • 数据寄存器用来存放计算的结果和操作数,也可以存放地址 • 每个寄存器又有它们各自的专用目的 • AX--累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等; • BX--基址寄存器,常用做存放存储器地址; • CX--计数器,作为循环和串操作等指令中的隐含计数器; • DX--数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。
变址寄存器 • 变址寄存器常用于存储器寻址时提供地址 • SI是源变址寄存器 • DI是目的变址寄存器
指针寄存器 • 指针寄存器用于寻址内存堆栈内的数据 • SP为堆栈指针寄存器,指示栈顶的偏移地址 • SP不能再用于其他目的,具有专用目的 • BP为基址指针寄存器,表示数据在堆栈段中的基地址 • SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址
8086的寄存器组 • 对汇编语言程序员来说,8086内部结构就是可编程的寄存器组 • 执行单元EU 8个通用寄存器 • 1个指令指针寄存器 • 1个标志寄存器 • 4个段寄存器
指令指针寄存器IP • 指令指针寄存器IP,指示代码段中指令的偏移地址 • 它与代码段寄存器CS联用,确定下一条指令的物理地址 • 计算机通过CS : IP寄存器来控制指令序列的执行流程 • IP寄存器是一个专用寄存器
8086的寄存器组 • 对汇编语言程序员来说,8086内部结构就是可编程的寄存器组 • 执行单元EU 8个通用寄存器 • 1个指令指针寄存器 • 1个标志寄存器 • 4个段寄存器
15 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF 标志寄存器 • 标志(Flag)用于反映指令执行结果或控制指令执行形式 • 8086处理器的各种标志形成了一个16位的标志寄存器FR(标志寄存器的内容称为程序状态字PSW) • 程序设计需要利用标志的状态
标志的分类 • 状态标志--用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它 CF ZF SF PF OF AF • 控制标志--可由程序根据需要用指令设置,用于控制处理器执行指令的方式 DF IF TF
当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF = 1;否则CF = 0。 3AH + 7CH=0B6H,没有进位:CF = 0 0AAH + 7CH=(1)26H,有进位:CF = 1 进位标志CF(Carry Flag)
零标志ZF(Zero Flag) • 若运算结果为0,则ZF = 1; 否则ZF = 0 • 注意:ZF为1表示的结果是0 3AH + 7CH=0B6H,结果不是零:ZF = 0 84H + 7CH=(1)00H,结果是零:ZF = 1
符号标志SF(Sign Flag) • 运算结果最高位为1,则SF = 1;否则SF = 0 • 有符号数据用最高有效位表示数据的符号, • 所以,最高有效位就是符号标志的状态。 3AH + 7CH=0B6H,最高位D7=1:SF = 1 84H + 7CH=(1)00H,最高位D7=0:SF = 0
奇偶标志PF(Parity Flag) • 当运算结果最低字节中“1”的个数为零或偶数时,PF = 1;否则PF = 0 • PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作 3AH + 7CH=0B6H=10110110B 结果中有5个1,是奇数:PF = 0
溢出标志OF(Overflow Flag) • 若算术运算的结果有溢出, 则OF=1;否则 OF=0 3AH + 7CH=0B6H,产生溢出:OF = 1 0AAH + 7CH=(1)26H,没有溢出:OF = 0
溢出标志OF(Overflow Flag) 问题 什么是溢出? 溢出和进位有什么区别? 处理器怎么处理,程序员如何运用? 如何判断是否溢出?
辅助进位标志AF (Auxiliary Carry Flag) • 运算时D3位(低半字节)有进位或借位时,AF = 1;否则AF = 0。 3AH + 7CH=0B6H,D3有进位:AF = 1 • 这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用户一般不必关心
方向标志DF(Direction Flag) • 用于串操作指令中,控制地址的变化方向: • 设置DF=0,存储器地址自动增加; • 设置DF=1,存储器地址自动减少。 • CLD指令复位方向标志:DF=0 • STD指令置位方向标志:DF=1
中断允许标志IF(Interrupt-enable Flag) • 用于控制外部可屏蔽中断是否可以被处理器响应: • 设置IF=1,则允许中断; • 设置IF=0,则禁止中断。 • CLI指令复位中断标志:IF=0 • STI指令置位中断标志:IF=1
陷阱标志TF(Trap Flag) • 用于控制处理器进入单步操作方式: • 设置TF=0,处理器正常工作; • 设置TF=1,处理器单步执行指令。 • 单步执行指令——处理器在每条指令执行结束时,便产生一个编号为1的内部中断 • 这种内部中断称为单步中断 • 所以TF也称为单步标志 • 利用单步中断可对程序进行逐条指令的调试 • 这种逐条指令调试程序的方法就是单步调试
8086的寄存器组 • 对汇编语言程序员来说,8086内部结构就是可编程的寄存器组 • 执行单元EU 8个通用寄存器 • 1个指令指针寄存器 • 1个标志寄存器 • 4个段寄存器
段寄存器 • 8086有4个16位段寄存器 • CS(代码段)指明代码段的起始地址 • SS(堆栈段)指明堆栈段的起始地址 • DS(数据段)指明数据段的起始地址 • ES(附加段)指明附加段的起始地址 • 每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途
第二章 8086微处理器及其系统结构 8086的功能结构 8086的寄存器组 8086微处理器引脚信号 8086微处理器典型时序分析
学习外部特性,首先了解其引脚信号,关注以下几个方面:学习外部特性,首先了解其引脚信号,关注以下几个方面: • 引脚的功能 • 信号的流向 • 有效电平 • 三态能力 输出正常的低电平、高电平外,还可以输出高阻的第三态
8086CPU引脚功能 • 8086与8088CPU引脚区别: • 8086有16位数据线,与地址线A0-A15兼用;20位地址线,寻址空间达到1MB;8088有8位数据线,与地址线A0-A7兼用; • 8086与8088CPU引脚28信号相反(M/IO, M/IO) • 引脚34信号, 8086与8088CPU功能稍有不同。 • 引脚分类 • 地址总线、数据总线、控制总线
地址/状态线 地址/数据线 8086CPU引脚功能 最小最大模式控制 MN/MX=1,最小模式 MN/MX=0,最大模式 读信号 总线保持请求信号 总线保持相应信号 存储器/IO控制信号 M/IO=1,选中存储器 M/IO=0,选中IO接口 写信号 数据发送/接收信号 DT/R=1,发送 DT/R=0,接收 数据允许信号 地址允许信号 非屏蔽中断 中断响应信号 准备好信号:表示内存 或I/O设备准备好, 可以进行数据传输。 测试信号:执行WAIT指令, CPU处于空转等待; TEST有效时,结束等待状态。 可屏蔽中断请求 复位信号
8086CPU的两种模式 • 最小模式 • MN/MX接+5V • 构成小规模的应用系统,只有8086一个微处理器, • 所有的总线控制信号均为8086产生,系统中的总线控制逻辑电路,减少到最少。 • 最大模式 • MN/MX接地。 • 用于大型(中型)8086/8088系统中,系统总是包含有两个或多个微处理器,其中一个主处理器就是8086或8088,其它的处理器称协处理器,协助主处理器工作。 • 需要总线控制器来变换和组合控制信号。
协处理器: 数值运算协处理器8087:由硬件实现高精度整数浮点段运算。 输入输出协处理器8089:相当两个DMA通道的处理器。 增加协处理器,不再占用8086时间,大大提高系统的运算速度效率。
8086在最小模式下的典型配置 • 1、MN/MX接+5V • 2、一片8284A,作为时钟发生器 • 3、三片8282或74LS273,作地址锁存器 • 4、二片8286/8287,作总线收发器
常见锁存器8282 • DI0 - DI7:数据输入引脚; • DO0 - DO7:数据输出引脚; • VCC、GND:电源与地线; • STB:数据选通信号,当有一个地址锁存控制信号送到该端时,8282即完成对输入数据的锁存任务; • OE:输出允许信号,该端接低电平时,8282就将锁存的内容传送到输出引脚上。
双向8位三态缓冲器8286 • A0 -A7、B0 - B7:两个8位双向输入/输出数据线; • VCC、GND:电源与地线; • T:数据传送方向控制线控制8286中的数据传送方向; • OE:输出允许信号,控制8286何时传送数据。
8086CPU的最大模式的典型配置 • 1、MN/MX接地; • 2、一片8284,作系统时钟 • 3、三片8282或74LS373,作锁存器 • 4、二片8286/8287,作数据收发器 • 5、一片8288,作总线控制器 • 6、一片8259
8086CPU的最大模式 特点:需要总线控制器来变换和组合控制信号。 MN/MX(33引脚)引线接地时,处于最大模式。 • QS1、QS2(25、24引脚):队列状态信号。 0 0 无 操作 0 1 取走指令队列第一个字节 1 0 队列空 1 1 取走指令队列后续字节代码
S2、 S1、 S0:输出(28、27、26引脚) 0 0 0 中断响应 0 0 1 读I/O口 0 1 0 写I/O口 0 1 1 暂存 1 0 0 取指令 1 0 1 读存储器 1 1 0 写存储器 1 1 1 无源状态
RQ/GT1、 RQ /GT0(30、 31引脚) • 双向,请求/允许信号 • 可供CPU以外的两个处理器发总线请求/允许信号。 • RQ/GT0优先级比RQ/GT1更高。 • LOCK (29引脚) • 输出,三态 • 总线锁定信号,由指令的前缀产生。 • 最大模式为多处理器系统,共用一条外部总线,需要增加总线控制器,来完成多处理器的分时控制。
第二章 8086微处理器及其系统结构 8086的功能结构 8086的寄存器组 8086微处理器引脚信号 8086微处理器典型时序分析
8086CPU的时序 基本概念 • 指令周期(Instruction Cycle):执行一条指令的时间。 • 总线周期(Bus Cycle)):CPU从存储器或I/O端口读写一个字节(字)的时间。 • 时钟周期(Clock Cycle):基本定时脉冲的两个沿之间的时间间隔,是CPU的最小时间单位。 • T状态(Tstate):一个基本时钟周期又称T状态。 • 基本总线周期:4个T状态
总线操作是指CPU通过总线对外的各种操作 • 8088的总线操作主要有: • 存储器读、存储器写 • I/O读操作、I/O写操作 • 中断响应操作 • 总线请求及响应操作 • CPU正在进行内部操作、并不进行实际对外操作的空闲状态Ti • 复位
存贮器读周期 例:MOV AL,[1000H] ;M/IO=1 T1状态:A19~A0上是地址信息,出现ALE信号后,将地址锁存到地址锁存器(8282)。 T2状态:地址信息消失,A19-A16从地址信息变为状态信息S6-S3。数据允许信号DEN在T2状态有效。 T3状态:AD0~AD15上出现数据。 RD信号有效(RD=0) TW状态:若存储器式外设的工作速度较慢,不能满足基本时序要求,使用一个产生READY的电路,以使在T3状态之后,插入一个等待周期TW。 T4状态:CPU采样数据,结束一个总线周期。
存储器写周期时序 例:MOV [1000H], AL ;M/IO=1 T1状态:A19~A0上是地址信息,出现ALE信号后,将地址 锁存到地址锁存器(8282)。 T2状态:地址信息消失,A19-A16从地址信息变为状态信息 S6-S3。 T3状态:AD0 ~AD15上出现数据。 WR信号有效(WR=0)。 TW状态:若存储器式外设的工作速度较慢,不能满足基本 时序要求,使用一个产生READY的电路,以使在T3状态之 后,插入一个等待周期TW。 T4状态:CPU认为数据已写入存储器,结束一个总线周期。