文档介绍:第2章 16位微处理器8086
8086的编程结构,尤其是寄存器组;
8086标志寄存器各个标志的含义;
8086的读写时序、总线操作和中断机制;
8086的存储组织
8086的I/O口
Pentium的先进技术;
Pentium的工作方式;
微处理器的性能指标
①字长:CPU一次可直接处理数据的位数,字长越长,计算能力越强,运算速度越快;8086是16位字长,Pentium是32位字长,分别称16位机,32位机。其中,Pentium常简称为P。
②主频:CPU的时钟频率。 8086的主频可达10MHz, P Ⅳ。
从功能上,8086分为两部分,即
(bus interface unit,BIU)
(execution unit,EU)
① 4个16位的段地址寄存器,
CS代码段寄存器:用来存放可执行的程序代码;
DS数据段寄存器:用来存放参加运算的操作数和运算结果。
ES附加段寄存器:通常也用来存放参加运算的操作数和运算结果,典型的用法是存放经过处理后的数据。
SS堆栈段寄存器:用来存放程序当前所使用的数据段的段基址。
② 16位的指令指针寄存器IP
③ 20位的地址加法器④ 6字节的指令队列缓冲器
IP说明
指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,即指令的段内相对地址,当BIU从内存中取出一个指令字节后,IP就自动加1,指向下一个指令字节。注意,IP指向的是指令地址的段内地址偏移量,又称偏移地址(Offset Address)或有效地址(EA,Effective Address)。
代码段寄存器(CS)和指令指针寄存器(IP)指示了CPU当前读取指令的20位地址,可抽象为存储在(程序计数器)PC中,但在80X86中不谈PC。
八位微处理器中的PC与IP
PC 是程序计数器,它是一个16位寄存器,专门用来产生和存放下一条需要执行的指令的地址。实际上它是指令地址寄存器。其寻址能力为64K字节。PC每输出一次代码,它的内容自动加1。因此,称它为程序计数器,PC在物理上是一个独立的寄存器,不属于内部数据存储器。PC每输出一次地址,就指向程序存储器的一个单元,CPU自动取出一个字节的指令代码而后执行。PC中内容一次次自动加1,指令就一条条被取出并执行。IP 是中断优先级控制寄存器。用其每位的状态对应控制一种中断的优先级,高优先级或低优先级。各中断源处于哪个级别,视情由用户对IP进行赋值设定。相应位为“1”则该位所控制中断源为高优先级,该位为“0”则为低优先级。
8086采用段结构的原因及原理
追根求源,Intel的8位机8080CPU,数据总线DB为8位,地址总线为16位。那么这个16位地址信息也是要通过8位数据总线来传送,也是要在数据通道中的暂存器,以及在CPU中的寄存器和内存中存放的,但由于AB正好是DB的整数倍,故不会产生矛盾!
但当上升到16位机后,Intel8086CPU的设计由于受当年IC集成技术和外封装及引脚技术的限制,不能超过40个引脚。但又感觉到8位机原来的地址寻址能力2^16=64KB太少了,但直接增加到16的整数倍即令AB=32位又是达不到的。故而只能把AB暂时增加4条成为20条,则2^20=1MB的寻址能力已经增加了16倍。但此举却造成了AB的20位和DB的16位之间的矛盾,20位地址信息既无法在DB上传送,又无法在16位的CPU寄存器和内存单元中存放。于是应运而生就产生了CPU段结构的原理。
逻辑地址与物理地址
(1)逻辑地址(Logical Address)是由段基址和段内偏移地址两部分组成,其表达式为“段地址:段内偏移地址”。
(2)物理地址(Physical Address)也叫实际地址或绝对地址,是出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。
逻辑地址不等于物理地址。所谓的物理地址,就是实实在在的通过CPU外部地址总线的地址信号。不管采取什么地址映射机制,最终要得到的就是物理地址。
逻辑地址和物理地址的关系: 比如你的学号是0102,这是你的真实地址亦即物理地址,那么又假如01表示你的班级名称,02表示你相对整个班级的位置,这就是逻辑地址,只不过在实际由逻辑地址合成物理地址的时候需要将物理地址左移4位,再加上偏移地址。
8086中20位的物理地址的构成
要把20位有效数字的物理地址分成两段,可以有多种分法。但要求这两段分开后,每段不能大于16位,也不能小于4位,分成高位和低位,共有13种分法。经典的分成16位+4位:高位有效数字即为段首址,但要在其低位补上4个零,保持20位,即左移4位,或乘16。20位实际地址中,低位有效数字即为