910 likes | 1.19k Views
汇编语言与接口技术. 教师:范新民. 第二章 8086 微 处理器. 第二章: 8086 微处理器. 教学提示:. 80X86 系列微处理器是 PC 系列机中处理器的主流产品, 16 位微处理器 8086 是 80X86 微处理器各代表芯片中实现处理器运控功能的基本部件。掌握 8086 微处理器的软 / 硬件是了解 80X86 微处理器芯片的基础。. 主要内容:. 第二章: 8086 微处理器. 8086 微处理器的结构特点 8086 微处理器的编程结构 8086 微处理器的引脚功能 8086 微处理器的基本时序. 2.1 8086 微处理器的结构.
E N D
汇编语言与接口技术 教师:范新民
第二章:8086微处理器 教学提示: 80X86系列微处理器是PC系列机中处理器的主流产品,16位微处理器8086是80X86微处理器各代表芯片中实现处理器运控功能的基本部件。掌握8086微处理器的软/硬件是了解80X86微处理器芯片的基础。
主要内容: 第二章:8086微处理器 • 8086 微处理器的结构特点 • 8086 微处理器的编程结构 • 8086 微处理器的引脚功能 • 8086 微处理器的基本时序
2.1 8086 微处理器的结构 第二章:8086微处理器 • 8086 微处理器的基本结构 • 8086 微处理器的编程结构
8086 CPU内部结构 2.1.18086 微处理器的基本结构 16位微处理器,采用40条引脚的DIP封装,时钟频率有三种:5MHZ、8MHZ、10MHZ。 • 分两部分: • 总线接口单元 BIU(Bus Interface Unit) • 执行部件 EU (Execution Unit)
8086 CPU内部结构图 AX BX CX DX
8086 CPU内部结构 1、总线接口部件BIU 总线接口部件BIU同外部总线连接,为执行部件EU完成全部的总线操作,并且计算、形成20位的内存储器的物理地址。 • 组成: • 4个段地址寄存器(CS、DS、ES、SS) • 16位指令指针寄存器IP
8086 CPU内部结构 • 20位的地址加法器 • (16段地址+偏移地址=物理地址) • 6字节(8086)或4字节(8088)的指令队列 • 总线控制电路: • 处理器与外界总线联系的转接电路。 • 包括三组总线: • 20位地址总线,16位(8086)或8位(8088)双向数据总线,一组控制总线。
8086 CPU内部结构 2、执行部件EU(Execution Unit) 从BIU的指令队列缓冲器中取指令、分析指令(指令译码),然后根据译码结果向EU内部各部件发出控制命令以完成指令的功能。 • 组成: • 4个通用寄存器:AX、BX、CX、DX • 4个专用寄存器:BP、SP、SI、DI, • 标志寄存器(PSW): • 9个标志位,其中6个条件标志位用于存放结果状态。
8086 CPU内部结构 • 算术逻辑单元: • 16位加法器,用于对寄存器和指令操作数进行算术或逻辑运算。 • EU控制系统: • 接受从总线接口单元的指令队列中取来的指令代码,对其译码和向EU内各有关部分发出时序命令信号,协调执行指令规定的操作。
8086 CPU内部结构 由于EU和BIU这两个功能部件能相互独立地工作,在大多数情况下,取指令所需的时间“消失”了(隐含在上一指令的执行之中),大大减少等待取指令所需的时间,提高了微处理器的利用率和整个系统的执行速度。 BIU和EU分开,取指和执行可以重迭,大大减少了等待取指所需的时间,提高CPU的利用率。
8086 CPU内部结构 3、8086与8080的比较
2.1.2 8086 CPU 的编程结构 第二章:8086微处理器 • 通用寄存器 • 指令指针IP和标志寄存器FR • 段寄存器 • 8086系统中内存分段
8086 CPU 的编程结构 8086的寄存器结构
1、通用寄存器 8086 CPU 的编程结构 (1)数据寄存器 累加器AX(Accumulator) 基址寄存器BX(Base) 计数寄存器CX(Count) 数据寄存器DX(Data) 这四个16位寄存器可分为 高8位(AH、BH、CH和DH)与低8位(AL、BL、CL和DL)可分别寻址、独立操作。 算术运算的主要寄存器 计算内存储器地址时,经常用来存放基址 循环LOOP指令和串处理指令中用作隐含计数器 双字长乘除法运算; I/O的端口地址寄存器
通用寄存器 (2)指针寄存器和变址寄存器 堆栈指针寄存器SP(Stack Pointer) 基址指针寄存器BP(Base Pointer) 源变址寄存器SI(Source Index) 目的变址寄存器DI(Destination Index) SP用来确定欲读写堆栈的地址,BP用来存放在现行堆栈段的一个数据区的“基地址”。SI、DI用于变址操作,存放变址地址。
2、指令指针寄存器IP(Instruction Pointer) 8086 CPU 的编程结构 • 指向当前需要取出的指令字节 • IP指向的是指令地址的段内地址偏移量,又称偏移地址(Offset Address)或有效地址EA (Effective Address)。 • 程序员不能对IP进行存取操作,程序中的转移指令、返回指令以及中断处理能对IP进行操作。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF 进位:Carry Overflow:溢出 奇偶:Parity Direction:方向 半进位: Auxiliary Carry Interrupt enable:中断允许 Trap:单步 全零: Zero 符号标志:Sign 指令指针IP和标志寄存器FR 3、 标志寄存器FR(Flag Register)
指令指针IP和标志寄存器FR 6个状态位如下: 进位标志CF:当加法运算有进位,减法运算有借位时,CF=1,否则CF=0。 • 辅助进位标志AF:在算术运算操作时,低4位向高4位有进位(加法)或有借位(减法);则AF=1,否则AF=0。 • 奇偶校验标志PF:当运算结果低8位“1”的个数为偶数时,PF=1,否则PF=0。主要用于检查数据传送过程中的错误。
指令指针IP和标志寄存器FR • 零标志ZF: 当运算结果为0时,ZF=1,否则ZF=0。 • 溢出标志OF:当运算结果超出补码表示的数值范围时,OF=1,否则OF=0。 • 符号标志SF:在进行符号数的运算时,当运算结果为负时,SF=1,否则SF=0。
指令指针IP和标志寄存器FR 3个控制标志位用来控制CPU的操作: • 方向标志DF:控制串操作指令对字符串处理的方向。 • 置DF=0时,由低地址向高地址进行串操作,变址寄存器SI和DI自动增量操作。 • 置DF=1时,在串操作中,变址寄存器SI和DI自动减量操作。 • 中断允许标志IF: • 置IF=0时,禁止CPU响应可屏蔽中断; • 置IF=1时,允许CPU响应可屏蔽中断;
指令指针IP和标志寄存器FR • 单步陷阱标志TF(Trap Flag): 置TF=1时: 置CPU进入单步工作方式,即CPU每执行完一条指令就产生一个内部中断(单步中断),以便对每条指令执行的结果作跟踪检查; 置TF=0时: 置CPU正常执行程序。
指令指针IP和标志寄存器FR 例1:执行两个数的加法,分析对标志位的影响。 标志: 运算结果最高位为0 ∴ SF=0 运算结果≠0 ∴ ZF=0 低8位中1的个数为奇数个 ∴ PF=0 最高位没有进位 ∴ CF=0 第三位向第四位无进位 ∴ AF=0 次高位向最高位没有进位,最高位向前没有进位, ∴OF=0
指令指针IP和标志寄存器FR 例2:执行AL和AH两个数相减的运算,分析对标志位的影响。若AL=3BH,AH=7DH 运算后: CF=1 (有借位) AF=1 (有辅助借位) SF=1 (符号位为1) PF=1 (运算结果中有6个1) OF=0 (无溢出) ZF=0 (运算结果不为0)
4、段寄存器(Segment Register) 8086 CPU 的编程结构 内存中通常存放着三类信息: • 代码(指令)—指示微处理器执行何种操作; • 数据(字符、数值)—程序处理的对象; • 堆栈信息—被保存的返回地址和中间结果等。 8086CPU内部有4个段寄存器: CS、DS、SS、ES
段寄存器(Segment Register) 段的起始地址由称为“段寄存器”的4个16位寄存器决定。 4个段寄存器为: • 代码段寄存器CS(Code Segment) 指向当前的代码段,指令由此段中取出; • 堆栈段寄存器SS(Stack Segment) 指向当前的堆栈段,堆栈操作的对象就是该段中存储单元的内容;
段寄存器(Segment Register) • 数据段寄存器DS(Data Segment) 指向当前的数据段,通常用来存放程序变量(存储器操作数); • 附加段寄存器ES(Extra Segment) 指向当前的附加段,通常也用来存放数据,以及一些专用指令的操作数。
2.1.3 8086系统中的存储器组织及物理地址的形成 8086 CPU内部结构 解决20位内存地址和16位地址计算能力的矛盾,8086程序把1M字节的存储空间看成为一组存储段,各段的功能由具体用途而定。 8086CPU有20位地址线,可寻址的最大物理内存容量为1MB。地址范围为 00000H~FFFFFH。 每个存储单元存储一个字节的数据,两个相邻的字节定义为一个字。每一个字的低字节存放在低地址中,高字节存放在高地址中,并以低字节的地址作为字地址。
8086系统中内存分段 一个存储段是存储器的一个逻辑单位,其长度可达64K字节,每段第一个字节的位置称为“段起始地址” 。 对段起始地址的要求是: 最好能被16整除(起始地址为××××0H)。段寄存器中存放了与段起始地址有关的16位“段基值”(Segment Base value),几个段可以相互重叠,也可指向同一个64K字节空间。
8086系统中内存分段 有两种存储器地址: • 逻辑地址(Logical Address) • 允许在程序中编排的地址 • 由段基地址和段内偏移地址组成的地址 • 段基地址和段内偏移地址都是16位的无符号二进制数 • 表示方法: 段基地址 : 偏移地址
8086系统中内存分段 • 物理地址(Physical Address) • 信息在存储器中实际存放的地址 • 存储器的20位的实际地址 • PA=段基地址×16+ 地址偏移 物理地址与逻辑地址的区别: 物理地址是存储器的绝对地址(20位的实际地址),范围从00000H~FFFFFH , 是由CPU访问存储器时由地址总线发出的地址。逻辑地址是程序员在程序设计时使用。
段基址 2000H 20000H 逻 辑 段内偏移地址 ...... 地 5F62H 25F60H 址 25F61H 25F62H 25F63H 8086系统中内存分段 逻辑地址与物理地址 物理地址的形成
8086系统中内存分段 8086系统中,对给定的任一存储单元而言有两部分逻辑地址: • 段基值:决定所在段第一个字节的位置。“段基值”存放在段寄存器(CS、SS、DS、ES)中。 • 段内偏移量:该存储单元相对于该段起始单元的距离。 “段内偏移量”由SP、BP、SI、DI、IP、BX和直接地址以及上述寄存器和直接地址的组合而形成。
逻辑地址的来源 8086系统中逻辑地址的来源可归纳如表所示: 注:EA为有效地址,反映操作数的段内偏移地址。
CS 代码段 IP DS 数据段 SI,DI或BX SS SP或BP 堆栈段 逻辑地址的来源 段寄存器和其他寄存器组合指向存储单元示意图:
2.2 8086微处理器的引脚功能 第二章:8086微处理器 一、 最小模式下8086微处理器的引脚及功能 二、 最大模式下8086微处理器的引脚功能
8086 CPU 引脚及功能 在计算机系统和计算机应用系统的分析和设计时,理解处理器芯片的引脚功能以及总线上有关信号的时间关系是十分重要的。 • 是输入信号还是输出信号 • 是高电平有效还是低电平有效 • 是二态信号还是三态信号 • 信号A/B的含义 • 多个信号用一个波形的表示方法
8086 CPU引脚及功能 2.2.1 8086微处理器的引脚及功能 • 8086 CPU是十六位的微处理器,它的信号包含16条数据线,20条地址线,以及若干控制信号。 • 为了减少芯片引脚数量,部分引脚采用分时复用的方式,构成40条引脚的双列直插式封装。 • 8086CPU有两种不同的工作模式(最小模式和最大模式)。8条引脚(24~31)在两种工作模式中,具有不同的功能。
8086 CPU引脚及功能 8086微处理器的封装外形 括号内为最大模式时的引脚
8086 CPU引脚及功能 1、地址总线和数据总线 • AD15~AD0(Address Data Bus) 分时复用的地址/数据线, 双向、三态。 • A19/S6~A16/S3(Address/Status) 分时复用的地址/状态线。输出、三态。 用作地址线时,A19~A16与AD15~AD0一起构成访问存储器的20位物理地址。CPU访问I/O端口时,A19~A16保持为“0”。
8086 CPU 引脚及功能 用作状态线时,S6恒为低电平,S5表示IF位的当前值,S4、S3用来表示当前正在使用的段寄存器:
8086 CPU 引脚及功能 2、读写控制信号引脚 读写控制信号用来控制CPU对存储器和IO设备的读写过程: • 数据传输方向(读/写); • 传输种类(存储器还是IO设备); • 读写方式(奇地址字节/偶地址字节/字); • 存储器/IO设备是否准备好的状态信号; • 分时总线上信号的类型等。
8086 CPU 引脚及功能 M/ (Memory/IO)存储器或I/O端口访问选择信号,三态输出。 (Read)读信号。三态输出,低电平有效,表示当前CPU正在读存储器或I/O端口。 (Write)写信号。三态输出,低电平有效,表示当前CPU正在写存储器或I/O端口。 READY 准备就绪信号。由外部输入,高电平有效,表示CPU访问的存储器或I/O端口已准备好传送数据。当READY无效时,要求CPU插入一个或多个等待周期TW,直到READY信号有效为止。
8086 CPU 引脚及功能 • /S7(Bus High Enable/Status) 总线高字节有效信号。三态输出,低电平有效。非数据传送期间,该引脚用作S7,输出状态信息。 • 8086CPU的16根数据线中: • 低8位数据线总是和偶地址的存储器或IO端口相连接, 这些存储器/IO端口称为偶地址体。 • 高8位的数据线与奇地址的存储器或IO端口相连接,这些存储器/IO端口称为奇地址体。
8086 CPU 引脚及功能 • 有效表示CPU正在使用高8位的数据线对奇体的存储单元或IO端口进行访问。它与最低位地址码A0配合起来表示当前总线使用情况,如下表:
8086 CPU 引脚及功能 • ALE(Address Latch Enable) 地址锁存允许信号,向外部输出,高电平有效。 • (Data Enable)数据允许信号,三态输出。表示CPU 当前准备发送或接受数据。 • DT/ (Data Transmit/Receive) 数据发送/接收控制信号,三态输出。CPU写数据到存储器或I/O端口时,输出高电平;CPU从存储器或I/O端口读取数据时,为低电平。
8086 CPU 引脚及功能 3、中断控制信号引脚 这一组引脚传输中断的请求和应答信号。 • INTR(Interrupt Request) 可屏蔽中断请求信号,由外部输入,电平触发,高电平有效。 CPU在每条指令的最后一个时钟周期对INTR进行测试,一旦测试到中断请求,并且当前中断允许标志IF=1,则暂停执行下一条指令转入中断响应周期。
8086 CPU引脚及功能 • (Interrupt Acknowledge)中断响应信号。向外部输出,低电平有效。 该信号表示CPU已经收到并且响应外部发来的INTR信号,要求请求中断的设备向CPU发送中断类型。 • NMI(Non Maskable Interrupt Request) 不可屏蔽中断请求信号。 由外部输入,边沿触发,正跳沿有效,不受中断允许标志的限制。
8086 CPU引脚及功能 4、DMA控制信号引脚 进行DMA传输之前要向CPU申请使用总线并取得认可。 • HOLD(Hold Request)总线请求信号。由外部输入,高电平有效。 • HLDA(Hold Acknowledge)总线请求响应信号。向外部输出,高电平有效。 CPU一旦测试到有HOLD请求,就在当前总线周期结束后,使HLDA有效,让出总线使用权。 HOLD变为无效后,CPU也将HLDA置成无效,并收回对总线的控制权。