80x86/Pentium微机原理及接口技术-微处理器-学习笔记
2021-02-08 11:23 jym蒟蒻 阅读(1175) 评论(0) 编辑 收藏 举报80x86/ Pentium微机原理及接口技术
2.1 8086/8088微处理器的内部结构与工作原理... 2
80x86/ Pentium微机原理及接口技术
1. 计算机基础
1.1常用术语
(1) 位(bit):每一位只有两种状态0或1。计算机能表示的最小数据单位。
(2) 字节(Byte):8位二进制数为一个字节。计算机基本存储单元内容用字节表示。
(3) 字(Word):PC常将2个字节定义为一个字,一个字为16位二进制数。微处理器内部数据传输、处理基本单位。
(4) 指令:由0和1组成的代码。让微处理器进行某种操作的命令。
(5) 指令系统:一台计算机能识别的全部指令。
(6) 程序:为了使计算机完成某种工作而编制的一系列指令。
(7) 存储器:存储数据和程序。可以把存储器看成很多存储单元,每个存储单元存8位二进制编码(1字节)。存储单元编号称为存储地址。
(8) 存储容量单位:1B=8bit;1KB=1024B=1024×8bit;1MB=1024KB;
1.2计算机中数与编码的表示方法
1.2.1进制表示及进制转换
(1) 10进制数:123.45D=1×102+2×101+3×100+4×10-1+5×10-2
(2) 2进制数:1010.101B=1×23+0×22+1×21+0×20+1×2-1+0×2-2+1×2-3=10.875D
(3) 16进制数:A2.F3H=10×161+2×160+15×16-1+3×16-2=163.03125D
(4) 10进制转2进制:整数部分除2取余,直到商为0。余数从下往上写。小数部分乘2取整,直到满足精度要求。整数从上往下写。
(5) 2进制转16进制:从右到左每4位转换成对应的16进制数。10-15用A-F表示。
1.2.2有符号数表示
问题:计算机是如何处理有符号数的?
将符号数值化,2进制数最高位定义为符号位,0表示+,1表示-。
(1) 真值:现实中的数字(2进制)必须有+/-。
(2) 原码:最高位为符号位(0表示+,1表示-),其余位均为数值位的二进制数。
(3) 反码:正数反码和原码相同,负数反码=原码符号位不变,其他各位取反。
(4) 补码:正数补码和原码相同,负数补码=原码中符号位不变,其他各位取反后+1。
(5) 运算规则:[X]原=[[X]补]补;[X]原=[[X]反]反;[X±Y]补=[X]补±[Y]补=[X]补+[±Y]补
1.2.3编码表示
(1) 非压缩型BCD码:1个字节表示1位10进制数,高4位清0。00000001 00000001表示11
(2) 压缩性BCD码:1个字节表示2位10进制数。00010001表示11
(3) ASCII码:用7位2进制数对字符进行编码,共有27=128个字符。
2. 80x86及Pentium微处理器
2.1 8086/8088微处理器的内部结构与工作原理
图2-1 8086/8088CPU内部结构图
8086/8088微处理器内部分为执行单元EU和总线接口单元BIU两部分。
执行单元负责完成指令的执行工作,总线接口单元负责完成预取指令和数据传输工作。可以实现流水作业,在执行指令的同时取下一条指令。
2.1.1执行单元EU
EU包括:1个运算器,8个16位通用寄存器(4个数据寄存器,4个指针寄存器),1个16位标志寄存器FR,16位内部数据总线等。
(1) 运算器:完成8位或16位运算工作。
(2) 16位内部数据总线:用于微处理器内部各部分间数据传送,位数决定了微处理器的位数。
(3) 4个数据寄存器:AX、BX、CX、DX,存放参与运算的数据或运算结果。每一个数据寄存器都是16位,可以将高低8位作为2个独立的8位寄存器使用。高8位分别为AH、BH、CH、DH,低8位分别为AL、BL、CL、DL。
AX:累加器。
BX:基址寄存器。
CX:计数寄存器。
DX:数据寄存器。
(4) 4个指针寄存器:
SP:堆栈指针寄存器。
BP:基址指针寄存器。
SI:源变址寄存器。
DI:目标变址寄存器。
(5) 标志寄存器FR(状态控制寄存器):
反应运算结果的状态或控制某种状态。
图2-2标志寄存器FR
16位FR中有9位有效位;
6位为状态位:
CF:进位状态位
AF:辅助进位状态位
SF:符号状态位
PF:奇偶状态位
ZF:零状态位
OF:溢出状态位
3位为控制位:
IF:中断允许标志
DF:方向标志
TF:陷阱标志,用于单步操作
2.1.2总线接口单元BIU
BIU包括:1个20位地址加法器,4个16位段寄存器,1个16位指令指针寄存器IP,1个4/6字节指令队列和总线控制逻辑等。
(1) 4个段寄存器:存放当前段的16位段基值。微处理器要访问某个单元,必须将该单元所在段的段基值存到段寄存器里,使其成为当前段。
CS:代码段寄存器,常用于存程序代码段的段基址,只能读出,不能通过指令赋值。
SS:堆栈段寄存器
DS:数据段寄存器
ES:附加数据段寄存器
(2) 指令指针寄存器IP:存放指令的偏移地址。
专为微处理器使用,不能通过指令进行访问。
当微处理器从代码段CS和指令指针寄存器IP所决定的内存单元中取出一个字节或一个字指令代码后,IP自动加1或加2,指向下字节或字的指令代码。
(3) 指令队列:与CPU速度匹配的高速缓存器,用以支持流水线工作。
(4) 20位地址加法器:通过20位地址加法器可自动完成由16位描述的逻辑地址转换成20位的物理地址。
逻辑地址:8086/8088微处理器采用存储器分段描述方法,将整个存储区划分成很多段,每个存储单元均处于某个段中,每个单元可以用两个参数描述:段基址、偏移量,指令中书写格式为段基址:偏移量,称为逻辑地址。
物理地址:16位段寄存器里面的段基值左移4位(乘以16),再与16位偏移量相加,形成20位物理地址。
8086/8088微处理器有20根外部地址线,但内部总线、内部寄存器只有16位,通过20位地址加法器,将逻辑地址变成物理地址,从而描述存储器单元的20位地址。
2.2 8086/8088的内部寄存器
一共有14个16位寄存器:
4个段寄存器:存放当前段的16位段基值。微处理器要访问某个单元,必须将该单元所在段的段基值存到段寄存器里,使其成为当前段。
4个数据寄存器:AX、BX、CX、DX,存放参与运算的数据或运算结果。每一个数据寄存器都是16位,可以将高低8位作为2个独立的8位寄存器使用。
4个指针寄存器:SP:堆栈指针寄存器。BP:基址指针寄存器。SI:源变址寄存器。DI:目标变址寄存器。
1个指令指针寄存器IP:存放指令的偏移地址。
1个标志寄存器FR(状态控制寄存器):反应运算结果的状态或控制某种状态。
2.3工作模式与引脚
图2-3 8086/8088引脚分配
引脚分配图说明:内部标注的引脚是8088与8086定义不同的引脚。括号内为最大工作模式下的引脚定义。
8086和8088CPU主要特点:
|
8088 |
8086 |
相同点 |
内部数据总线为16位,寄存器和指令系统完全兼容 |
|
不同点
|
外部数据总线为8位 |
外部数据总线为16位 |
指令队列缓存器为4字节 |
指令队列缓存器为6字节 |
|
无控制线 |
有控制线 |
|
存储器和IO选择控制线为/M |
存储器和IO选择控制线为M/ |
(1) 最小工作模式:构成单位处理器的简单系统,全部信号线均由8086/8088CPU提供,引脚MN/接+5V。
(2) 最大工作模式:构成多处理器的复杂系统。系统中除有一个主微处理器8086/8088外,还有两个协处理器:8087(用于数值运算处理),8089(用于输入输出设备服务),部分控制信号线是由8288总线控制器提供的,引脚MN/接地。
(3) 8086/8088为40引脚双列直插式DIP芯片。部分引脚采用复用技术,包括分时复用(某一时刻提供一种信息,另一些时刻提供另外一些信息),分状态复用(输入输出定义不同、高电平低电平定义不同、不同模式下定义不同)等。
主要引脚:
AD0~AD15:地址/数据分时复用线
A16/S3~A19/S6:地址/状态分时复用线
MN/:最小工作模式/最大工作模式控制信号
ALE:地址锁存允许信号,三态输出线。
:高8位数据总线允许/状态分时复用线,三态输出。
RESET:复位信号,输入线,高电平有效。使处理器马上结束当前操作,对处理器内部寄存器进行初始化。复位后除了内部寄存器CS=FFFFH,其他寄存器及指令队列均被清零。
:读控制信号,三态输出线,低电平有效。
:写控制信号,三态输出线,低电平有效。
M/:存储器/IO接口控制线,三态输出。高电平表示CPU与存储器进行数据传输,此时由20位地址线状态确定数据在存储器中的位置。低电平表示CPU与I/O接口进行数据传输,此时只有16位地址线有效。
、、M/的不同组合可产生CPU对存储器单元或I/O接口进行读或写的控制信号。
图2-4 8086/8088对存储器或I/O操作信号
2.4存储器组织
2.4.1实模式下存储器组织
(1) 所有数据以字节形式存放在存储单元中,每一个单元均占一个地址,任何两个相邻字节构成一个字,占两个地址。80x86用地址值较小的那个字节单元地址作为这个字单元地址。
(2) 一个16位字中低8位数据存在较小地址单元中,高8位数据存在地址较高单元中。
图2-5单元地址的描述
2.4.2存储器分段管理
(1) 在软件中8086/8088对存储器采用分段描述的方法,将整个存储区划成很多段,每一段大小可各不相同,但均≤64KB。如下图2-6所示,各段之间可以紧密连接(a),部分或完全重叠(c),也可以不相关(b)。
图2-6 8086/8088内存分段管理
(2) 8086/8088所管理的存储器,所有数据以字节形式存放在存储单元中,每个单元均有一个唯一的20位地址,称为物理地址。每一个存储单元一定处于某个段中,且距该段的起始单元有一个偏移量,如下图2-7所示。指令中描述为段基值:偏移量,称为逻辑地址。通过20位地址加法器可自动完成由16位描述的逻辑地址转换成20位的物理地址。偏移量以字节数计算。
图2-7 物理地址和逻辑地址
(3) 8086/8088微处理器对每个存储单元的描述,一种是20位的物理地址,在地址总线上;一种是由两个16位参数描述的逻辑地址,在指令中。物理地址唯一,逻辑地址不唯一。
(4) 分段方法进行存储器组织的优点:可以使指令系统中大部分指令只涉及16位地址,减少了指令长度,提高运行程序的速度。8086存储空间高达1M,但在程序执行过程中,只在一个较小存储空间运行,段寄存器的值很少改变。
2.4.3奇偶存储器结构
8086有16个外部数据总线,为了使8086既可以传输8位数据,又可传输16位数据,8086的存储器采用奇偶两个存储体结构。两块存储体分别用和A0控制,两存储体可同时传输数据,达到传输16位数据的目的,也可以只对某一块存储体传输8位数据。
在总线周期的T1时刻引脚输出为低电平时,表示当前高8位数据总线D15~D8上数据有效。A0引脚输出低电平,则低8位数据线传送数据。
图2-8奇偶存储体结构
当操作字时,对于偶地址字,在一个读/写周期内,低8位数据线传送低字节,高8位数据线传送高字节,此时A0=0、=0,如下图2-9中(3)所示。对于奇地址字必须由两个读/写周期完成,第1个周期低8位数据线空闲,高8位数据线传输数据的低字节,此时A0=1、=0,第2个周期低8位数据线传送数据的高字节,高8位数据线空闲,此时A0=0、=1,如下图2-9中(4)所示。
当操作字节时,若该字节地址为偶数,则在读/写操作周期中,低8位数据线传输数据,高8位数据线空闲,此时A0=0、=1;若该字节地址为奇数,则在读/写操作周期中,高8位数据线传输数据,低8位数据线空闲,此时A0=1、=0。
图2-9 8086存储器传输特点
2.5堆栈组织
(1) 8086/8088的堆栈组织:
堆栈是一个特定的存储区,在内存中开辟一块存储区,专门用来存数据,一端是固定的,一端是活动的,所有的信息存取都在活动的一端进行。栈指针始终指向堆栈的顶部,操作原则是后进先出。
8086/8088微机的堆栈是按字组织的,每次在堆栈中存取数据均是两个字节的操作,数据的高8位存于地址较高单元,低8位存于地址较低单元。
如图2-10所示,堆栈是由堆栈段寄存器SS指定的一段存储区,由SP作为栈指针指向栈顶,即指向存放数据的最小字地址单元。堆栈段可以有一个或多个,每一个堆栈的容量≤64,如果更换堆栈区,应重新设置SS,而且更换SS内容时要紧接着赋给SP新值。
图2-10 8086/8088堆栈组织
(2) 8086/8088的堆栈操作:栈区操作为16位数据操作且默认通过SS:SP访问。
设置栈区:使用栈区之前设置SS和SP的初值,栈区的容量(长度)。
进栈操作:PUSH src;进栈时指针SP先减2,再把1个字压入栈区。SPSP-2、SS:[SP]低字节、SS:[SP+1]高字节。
出栈操作:POP dest;出栈时栈顶中的字先出栈,然后指针SP加2。低字节SS:[SP]、高字节SS:[SP+1] 、SPSP+2。
(3) 堆栈操作用途:
堆栈可以作为缓冲器,暂存一些希望运行时不被破坏的参数;调用子程序或中断过程发生时,用堆栈保护断点及现场参数。在子程序返回或中断返回时弹出断点及现场参数,使主程序继续工作;可以利用堆栈实现数据交换。
2.6时序
图2-11时钟周期、总线周期、指令周期
处理器的周期状态可分为时钟周期、总线周期、指令周期。
(1) 时钟周期是两个脉冲信号的前沿之间的间隔,用T表示。取决于系统主频,是处理器完成一个微操作所需的时间,也是处理器的基本时间计量单位。
(2) 总线周期是处理器完成一个基本操作所用的时间。总线读或写操作的周期由4个时钟周期组成。总线周期包括:存储器写总线周期、存储器读总线周期、I/O接口写总线周期、I/O接口读总线周期、中断响应周期、DMA响应周期、复位周期等。
(3) 指令周期是处理器执行一条指令所需的时间。