第二章 微处理器通过本章的学习,读者应该掌握以下内容:
8086/8088微处理器的结构及指令执行的操作过程
8086/8088在最大和最小模式下引脚功能
8086的操作时序
80x86的实地址方式和虚地址方式
2,1 8086/8088微处理器
2,1,1 8086/8088微处理器的结构及执行程序的操作过程
8086,Intel系列的 16位微处理器,16条数据线,20条地址线,可寻址地址范围 220=1MB,8086工作时,只要一个 5V 电源和一个时钟,时钟频率为 5MHz。
8088,内部与 8086兼容,也是一个 16位微处理器,只是外部数据总线为 8位,所以称为准 16位微处理器。 它具有包括乘法和除法的 16位运算指令,所以能处理 16
位数据,还能处理 8位数据。 8088有 20根地址线,所以可寻址的地址空间达 220即 1M字节。
AH AL
BH BL
CH CL
DH DL
SP
BP
DI
SI
通用寄存器运算寄存器
ALU
标志执行部分控制电路
1 2 3 4 5 6
CS
DS
SS
ES
IP
内部寄存器
I/O
控制电路地址加法器
20位
16位
8位 指令队列缓冲器外总线执行部件 总线接口部件
8086CPU结构图
1、总线接口部件功能:
( 1)、从取指令送到指令队列。
( 2),CPU执行指令时,到指定的位置取操作数,
并将其送至要求的位置单元中。
总线接口部件的组成:
( 1)、四个段地址寄存器
CS,16位代码段寄存器;
DS,16位数据段寄存器;
ES,16位附加段寄存器;
SS,16位堆栈段寄存器。
( 2),16位指令指针寄存器 IP( PC)。
( 3),20位的地址加法器。
( 4)、六字节的指令队列缓冲器。
说明:
( 1)、指令队列缓冲器,在执行指令的同时,将取下一条指令,并放入指令队列缓冲器中。 CPU执行完一条指令后,可以指令下一条指令(流水线技术)。提高 CPU效率。
( 2)、地址加法器,产生 20位地址。 CPU内无论是段地址寄存器还是偏移量都是 16位的,通过地址加法器产生 20位地址。
2、执行部件作用:
( 1)、从指令队列中取出指令。
( 2)、对指令进行译码,发出相应相应的控制信号。
( 3)、接收由总线接口送来的数据或发送数据至接口。
( 4)、进行算术运算。
执行部件的组成:
( 1)、四个通用寄存器 AX,BX,CX,DX。
四个通用寄存器都是 16位或作两个 8位来使用。
( 2)、专用寄存器
SP------堆栈指针寄存器
BP------基址指针寄存器
DI-------目的变址寄存器
SI------- 源变址寄存器
( 3)、算术逻辑单元 ALU
完成 8位或者 16位二进制算术和逻辑运算,计算偏移量。
( 4)、数据暂存寄存器协助 ALU完成运算,暂存参加运算的数据。
( 5)、执行部件的控制电路从总线接口的指令队列取出指令操作码,通过译码电路分析,发出相应的控制命令,控制 ALU数据流向。
( 6)、标志寄存器
16位寄存器,其中有 7位未用。
D15 D0
OF DF IF TF SF ZF AF PF CF
进借位标志奇偶标志半进借位标志零标志符号标志单步中断中断允许方向标志溢出标志
1-有进、借位
0-无进、借位
1-低 8位有偶数个 1
0-低 8位有奇数个 1
1-低 4位向高 4位有进、借位
0-低 4位向高 4位无进、借位
1-结果为 0
0-结果不为 0
3,8086/8088CPU执行程序的操作过程
( 1),20位地址的形成,并将此地址送至程序存储器指定单元,从该单元取出指令字节,依次放入指令队列中。
( 2)、每当 8086的指令队列中有 2个空字节,8088指令队列中有 1个空字节时,总线接口部件就会自动取指令至队列中。
( 3)、执行部件从总线接口的指令队列首取出指令代码,执行该指令。
( 4)、当队列已满,执行部件又不使用总线时,总线接口部件进入空闲状态。
( 5)、执行转移指令、调用指令、返回指令时,先清空队列内容,再将要执行的指令放入队列中。
2,1,2 8086/8088微处理器的引脚功能根据所连的存储器和外设规模的不同,使它们可以在两种模式下工作:
系统的最小模式,只有一 8086/8088CPU。
系统的最大模式,有两个或两个以上的 CPU,一个为主 CPU8086/8088,另一个为协 CPU8087/8089。
指令周期,执行一条指令所需要的时间。
总线周期(机器周期),CPU通过总线与存储器或 I/O
接口进行一次数据传输所需的时间。
T状态(时钟周期),CPU处理动作的最小单位。
T1 T2 T3 TW T4
总线周期而当系统规模较大时,要求有较强的驱动能力,
这样就需要两个获两个以上的微处理器。其中有一个是主处理器 8086或 8088,其它的处理器称为协处理器,
它们协助主处理器工作。例如 8088便通过总线控制器
8288来形成各种控制信号。
如图所示,为 8086CPU和 8088CPU的引脚信号图。
共有 40条引脚线,这些引脚线用来输出或接收各种信号:地址线,数据线,控制线和状态线,电源线和定时线。
由于 8088微处理器是一种准 16位机。其内部结构基本上与 8086相同,其信号也与 8086基本相同,只是有一些引脚的功能有所不同,在这里,我们将以 8086
为例,具体介绍一下 最小模式 下和 最大模式 下各位引脚功能,如出现功能不同的引脚再具体讲解 。
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
GND
AD14/A14
AD13/A13
AD12/A12
AD11/A11
AD10/A10
AD9/A9
AD8/A8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND
VCC( 5V)
AD15/A15
A16/S3
A17/S4
A18/S5
A19/S6
/BHE/S7 HIGH( SSO)
MN//MX
/RD
HOLD( /RQ//GT0)
HLDA( /RQ//GT1)
/WR( /LOCK)
M//IO( /S2)
DT//R( /S1)
/DEN( /S0)
ALE( QS0)
/INTA( QS1)
/TEST
READY
RESET
8086/8088
1、地址 /数据总线
AD15-AD0:地址 /数据复用引脚,双向,三态。
( 8086/8088) AD15-AD0,16位地址总线 A15-A0,输出访问存储器或 I/O的地址信息。
( 8086) AD15-AD0,16位数据总线 D15-D0,与存储器和 I/O设备交换数据信息。
( 8088) AD7-AD0,8位数据总线 D7-D0,与存储器和
I/O设备交换数据信息。
地址 /数据总线复用,分时工作。
2、地址 /状态总线 A19/S6-A16/S3
A19/S6-A16/S3,地址 /状态总线复用引脚,输出,三态。
A19/S6-A16/S3,输出访问存储器的 20位地址的高 4位地址 A19-A16。
A19/S6-A16/S3,输出 CPU的工作状态。
A19/S6-A16/S3,分时工作,T1状态:输出地址的高 4
位信息; T2,T3,T4状态:输出状态信息。
S6,指示 8086/8088当前是否与总线相连,S6=0,表示
8086/8088当前与总线相连。
S5,表明中断允许标志当前的设置。 S5=0,表示 CPU
中断是关闭的,禁止一切可屏蔽中断源的中断请求 ;
S5=1,表示 CPU中断是开放的,允许一切可屏蔽中断源的中断申请。
S4,S3,指出当前使用段寄存器的情况。
S4,S3组合所对应的段寄存器情况
S4 S3 段寄存器
0 0 当前正在使用 ES
0 1 当前正在使用 SS
1 0 当前正在使用 CS
1 1 当前正在使用 DS
3、控制总线
(1),/BHE/S7,高 8位数据总线允许 /状态复用引脚。在总线周期的 T1状态,此引脚输出 /BHE信号,表示高 8
位数据线 D15-D8上的数据有效。
在 T2,T3,TW和 T4状态时,此引脚输出 S7状态信号。
/BHE,A0组合:
/BHE A0 总线使用情况
0 0 从偶地址单元开始,在 16位数据总线上进行字传送
0 1 从奇地址单元开始,在高 8位数据总线上进行字节传送
1 0 从偶地址单元开始,在低 8位数据总线上进行字节传送
1 1 无效
S7,8086中无定义。
8088中,在最大模式中,为高电平;
在最小模式中,输出 SS0信号,此信号与其它信号合作将总线周期的读 /写动作。
( 2),/RD,读信号,三态输出,低电平有效。 /RD=0,
表示当前 CPU正在对存储器或 I/O端口进行读操作。
( 3),/WR,写信号,三态输出,低电平有效 。
/WR=0,表示当前 CPU正在对存储器或 I/O端口进行读操作。
( 4),M//IO,存储器或 IO端口访问信号,三态输出。
M//IO=1,表示 CPU正在访问存储器; M//IO=0,表示
CPU正在访问 IO端口。
( 5),READY,准备就绪信号,输入,高电平有效。
READY=1,表示 CPU访问的存储器或 IO端口已准备好传送数据 。若 CPU在总线周期 T3状态检测到 READY=0,
表示未准备好,CPU自动插入一个或多个等待状态 TW,
直到 READY=1为止。
( 6),INTR,可屏蔽中断请求信号,输入,高电平有效。 当 INTR=1,表示外设向 CPU发出中断请求,CPU
在当前指令周期的最后一个 T状态去采样该信号,若此时,IF=1,CPU响应中断,执行中断服务程序。
( 7),/INTA,中断响应信号,输出,低电平有效。
表示 CPU响应了外设发来的中断申请信号 INTR。
( 8),NMI,不可屏蔽中断请求信号,输入,上升沿触发。该请求信号不受 IF状态的影响,也不能用软件屏蔽,一旦该信号有效,则执行完当前指令后立即响应中断。
( 9),/TEST,测试信号,输入,低电平有效。当
CPU执行 WAIT指令时,每隔个时钟周期对 /TEST进行一次测试,若 /TEST=1,继续等待,直到 /TEST=0。
( 10),RESET:复位信号,输入,高电平有效。
RESET信号至少要保持 4个时钟周期。 复位时:标志寄存器,IP,DS,SS,ES为 0,CS=FFFFH,复位后
CPU从 FFFF0H处开始 执行。
( 11),ALE,地址锁存允许信号,输出,高电平有效。
用来锁存地址信号 A15-A0,分时使用 AD15-AD0地址 /
数据总线。
( 12),DT//R,数据发送 /接收控制信号,三态输出。
此信号控制数据总线上的收发器 8286的数据传送方向,
DT//R=1,发送数据 ----写操作; DT//R=0,接收数据 --
读操作。
( 13),/DEN,数据允许信号,三态输出,低电平有效。作为数据总线上收发器 8286的选通信号。
( 14),HOLD,总线请求信号,输入,高电平有效。
当系统中 CPU之外的另一个控制器要求使用总线时,
通过它向 CPU发一高电平的请求信号。
( 15),HLDA,总线请求响应信号,输出,高电平有效。 当 HLDA有效时,表示 CPU对其它控制器的总线请求作出响应,与此同时,所有与三总线相接的 CPU的线脚呈现高阻抗状态,从而让出总线。
( 16),MN//MX,工作模式选择信号,输入。
MN//MX=1,表示 CPU工作在最小模式系统;
MN//MX=0,表示 CPU工作在最大模式系统。
( 17),CLK,主时钟信号,输入。 8086/8088的时钟频率为 5MHZ。
4、电源线和地线
8086/8088采用单 +5V,1,20引脚为地线。
5、最大模式下的有关引脚
( 1),QS1,QS2:指令队列状态信号,输出。
QS1 QS2 含义
0 0 无操作
0 1 将指令首字节送入指令队列
1 0 队列为空
1 1 将指令其余字节送指令队列
( 2),S2,S1,S0:总线周期状态信号,三态输出。
S2,S1,S0状态信号的编码
S2 S1 S0 操作过程 产生信号
0 0 0 发中断响应信号 /INTA
0 0 1 读 I/O端口 IORC
0 1 0 写 I/O端口 IOWC
0 1 1 暂停 无
1 0 0 取指令 /MRDC
1 0 1 读存储器 /MRDC
1 1 0 写存储器 /AMWC
1 1 1 无作用 无
( 3),/RQ//GT1,/RQ//GT2,总线请求信号
(输入) /总线请求允许信号(输出),双向,
低电平有效。
( 4),/LOCK,总线封锁信号,三态输出,
低电平有效。 /LOCK=0,CPU不允许其它控制器占用总线。
2,1,3 8086/8088系统存储器的组织和堆栈
1,8086/8088系统存储器的组织
8086/8088是 16位的微处理器,在组成存储系统时,总是使偶地址单元的数据通过 AD0 ~AD7传送,而奇地址单元的数据通过 AD8~AD15传送,所有的操作可以是按字节为单位也可以是按字为单位来处理的,但 8086/8088系统中的存储器是以 8位(一个字节)为单位对数据进行处理的。因此每个字节用一个唯一的地址码表示,这称为存储器的 标准结构 。
需要说明的是,在存储器中,任何连续存放的两个字节都可以称为一个字。存放时,其低位字节可从奇数地址开始,这种方式称为非规则方式,奇数地址的字称为 非规则字 。其高位字节可从偶数地址开始,这种方式称为规则方式,。将偶数地址的字称为 规则字 。
( 2) 8086存储器的分段结构由于 8086/8088有 20条地址线,可以寻址多达 220
( 1M)字节,所以把 1M字节的存储器分为任意数量的段,其中每一段最多可达寻址 216( 64K)字节。
8086CPU把 1M字节的存储器空间划分为任意的一些存储段,一个存储段是存储器中可独立寻址的一个逻辑单位,也称逻辑段,每个段的长度为 64K字节。
8086CPU中有四段寄存器,CS,DS,SS和 ES,
这四个段寄存器存放了 CPU当前可以寻址的四个段的基址,也即可以从这四个段寄存器规定的逻辑段中存取指令代码和数据。一旦这四个段寄存器的内容被设定,就规定了 CPU当前可寻址的段。
(3)8086存储器的逻辑地址和物理地址存储器中的每个存储单元都可以用两个形式的地址来表示:
实际地址 (或称 物理地址 )和 逻辑地址 。
实际地址,也称物理地址,是用唯一的 20位二进制数所表示的地址,规定了 1M字节存储体中某个具体单元的地址 。
逻辑地址 在程序中使用,即段地址:偏移地址 。
(4)物理地址的形成物理地址有两部分组成,段基址和偏移地址。
8086/8088CPU中有一个地址加法器,它将段寄存器提供的段地址自动乘以 10H即左移 4位,然后与 16位的偏移地址相加,并锁存在物理地址锁存器中。如图所示。
物理地址 =段基址 * 16 +偏移地址。
段基址,CS,DS,ES,SS。
偏移地址,IP,DI,SI,BP,SP等。
段寄存器值偏移量+
物理地址
16位 4位
16位
20位存储器物理地址的计算方法
CS 0000
IP
代码段
DS或 ES 0000
SI,DI或 BX
SS 0000
SP或 BP
数据段堆栈段存储器段寄存器和偏移地址寄存器组合关系
2,堆栈堆栈主要用于暂存数据和在过程调用或处理中断时暂存断点信息。
( 1)堆栈的概念堆栈是在存储器中开辟的一片数据存储区,这片存储区的一端固定,另一端活动,且只允许数据从活动端进出。采用,先进后出,的规则 。
( 2)堆栈的组织堆栈指示器 SP,他总是指向堆栈的栈顶堆栈的伸展方向既可以从大地址向小地址,也可以从小地址向大地址。 8086/8088的堆栈的伸展方向是从大地址向小地址。
2,2 8086总线的操作时序在微机系统中,CPU是在时钟信号 CLK控制下,按节拍有序地执行指令序列。从取指令开始,经过分析指令、对操作数寻址,然后执行指令、保存操作结果,
这个过程称为 指令执行周期 。
指令周期,执行一条指令所需要的时间。
总线周期(机器周期),CPU通过总线与存储器或 I/O
接口进行一次数据传输所需的时间。
T状态(时钟周期),CPU处理动作的最小单位。
T1 T2 T3 TW T4
总线周期
2,2,2 8086的时序
8086的总线时序包括以下一个部分:
( 1)、系统复位。
( 2)、存储器读操作。
( 3)、存储器写操作。
( 4)、中断响应操作。
( 5)、输入输出周期。
( 6)、空转周期。
总线操作总线读操作,CPU从存储器或外设读取数据。
总线写操作,CPU将数据写入存储器或外设。
1、存储器读周期总线周期包括,T1,T2,T3、( TW),T4机器周期。
( 1),T1周期
M//IO信号,从存储器读还是从 I/O设备中读数据;
AD15-AD0,A19/S7-A16/S3,确定 20位地址;
/BHE,选择奇地址存储体选择。
ALE,地址锁存信号,以使地址 /数据线分开。
( 2),T2状态
A19/S6-A16/S3,出现 S6-S3状态信号。决定段寄存器、
IF状态,8086CPU不否连在总线上。
AD15-AD0,高阻状态。
/RD,由高电平变为低电平,开始进行读操作。
/DEN,变低电平,启动收发器 8268,做好接收数据的准备。
( 3),T3状态
若存储器或 I/O端口已做好发送数据准备,则在 T3状态期间将数据放到数据总线上,在 T3结束时,CPU从
AD15-AD0上读取数据。
( 4),TW状态
在 T3状态,存储器或外设没有准备好数据,不能在 T3
状态将数据放到总线上,使 READY=0,则 CPU在 T3
和 T4之间 插入一个或几个 TW状态,直到 数据准备好
READY=1为止。
TW状态时总线的动作与 T3时相同。
( 5),T4状态
CPU对数据总线进行采样,读出数据。
CPU往存储器或 I/O设备写数据的时序如下页所示:
CLK
T1 T2 T3,TW T4
M//IO
A19/S6-A16/S3 A19-A16/BHE/S7 /BHE S7-S3
ALE
READY
AD15-AD0 地址输出 数据输出
/RD
DT//R
/DEN
CPU从存储器或 I/O端口读取数据的时序
2、存储器写周期
( 1),T1状态
M//IO信号:对 存储器写还是对 I/O设备中写数据;
AD15-AD0,A19/S7-A16/S3,确定 20位地址;
/BHE,选择奇地址存储体选择。
ALE,地址锁存信号,以使地址 /数据线分开。
DT//R,为高电平,指示收发器 8286发送数据,写操作。
( 2),T2状态
A19/S6-A16/S3,出现 S6-S3状态信号。决定段寄存器、
IF状态,8086CPU不否连在总线上。
AD15-AD0,发出 16位数据。
/WR,由高电平变为低电平,开始进行写操作。
/DEN,变低电平,启动收发器 8268,做好发送数据的准备。
( 3),T3状态
若存储器或 I/O端口已做好接收数据准备,则在 T3状态期间将数据放到数据总线上,在 T3结束时,CPU将
AD15-AD0上数据写入到存储器或 I/O设备中。
( 4),TW状态
在 T3状态,存储器或外设没有准备好接收数据,使
READY=0,则 CPU在 T3和 T4之间 插入一个或几个 TW
状态,直到 设备准备好 READY=1为止。
( 5),T4状态在 T4状态,数据从数据总线上被撤除,各种控制信号和状态信号进入无效状态,CPU完成了对存储器或
I/O设备的写操作。
3、输入 /输出周期
8086与外设通讯,也即从外设输入数据,或把数据输出给外设的时序,与 CPU同存储器之间的通讯时序,几乎完全相同,只是 IO/ M信号应为高。所以我们就不赘述。
4、空转周期
8086只有在 CPU于存储器或外设要传送指令或操作时,
才能执行如上所述的总线周期,若 CPU不执行总线周期,则总线接口执行空转操作 。
CLK
T1 T2 T3,TW T4
M//IO
A19/S6-A16/S3 A19-A16/BHE/S7 /BHE S7-S3
ALE
READY
AD15-AD0 地址输出 数据输出
/WR
DT//R
/DEN
CPU往存储器或 I/O端口写数据的时序
5、中断响应周期
中断响应周期,从 CPU中止现行程序转中断服务程序这一过程。
中断响应周期要用两个总线周期。
第一个响应周期:使 AD15-AD0,/BHE/S7,A19/S6-
A16/S3悬空。
第二个响应周期:外设向数据总线上输送一个字节的中断类型号。
每一响应周期的 T1状态输出一个高电平脉冲,作为地址锁存信号。
CLK
T1 T2 T3 T4 T1 T2 T3 T4
第一中断响应周期 第二中断响应周期
ALE
/INTA
AD7-AD0
8086中断响应周期的时序图
6、总线保持和响应周期(保持响应信号 HLDA)
7、系统复位产生,RESET端上的高电平维持 4个时钟周期,可使
CPU复位。
CPU复位:
PSW,DS,ES,SS,IP等寄存器,指令队列 [被清零。
CS寄存器设置为 FFFFH。
注:由于复位后,IF=0,处关中断状态,所以在初始化程序中应开中断,使 CPU可响应中断请求。
当 RESET由高电平变低电平 7个机器周期后,CPU开始从 FFFF0处执行程序。
8086的复位时序:
CLK
RESET输入
RESET内部三态门 浮空
8086CPU复位后总线信号:
AD15-AD0:
A19/S6-A16/S3:
/BHE/S7:
S2,S1,S0:
/LOCK,/RD,/INTA:
ALE,HLDA,QS0,QS1:
/RQ//GT0:
/RQ//GT1:
高阻状态低电平高电平
2,3 80x86的工作模式主要介绍一下 实地址方式 和 保护虚地址方式 。
2,3,1 实地址方式具有 32条地址线的微处理器只有低 20条地址线起作用,
能寻址 1M字节的物理地址。
实地址方式和保护虚地址方式的区分是由控制寄存器
CR0的最低位 PE位决定的。
若 PE位为 0,则工作在实地址方式;
若 PE位为 1,工作在保护虚地址方式 ;
实地址方式下,采用类似于 8086的体系结构。归纳起来,有如下几个特点:
① 寻址机构、存储器管理、中断处理机构和 8086一样
②操作数默认长度为 16位,但允许访问处理器的 32位寄存器组,在使用 32位寄存器组时,指令中要加上前缀以表示越权存取。
③不用虚拟地址的概念,存储器容量最大为 1M字节;
采用分段方式,每段大小固定为 64K字节,存储段可以彼此覆盖,即一个 64K字节的段如未用完,另一个段可以覆盖未用的存储区。
④实地址方式下,存储器中保留两个固定区域,一个为初始化程序区,另一个为中断向量区。前者为
FFFF0H— FFFFFH,后者为 00000— 003FFH。
⑤在实地址方式下,运行的程序不分特权等级,实际上,实地址方式下的程序相当于工作在特权级 0,除保护虚地址方式下的一些专用指令外,所有其他指令都能在实地址方式下运行。
2,3,2 保护虚地址方式在保护方式下,全部 32根地址有效,可寻址达 4G字节的物理空间;
支持多任务,一个任务可运行多达 16KB个段,每个段最大可为 4G字节,故一个任务最大可达 64MM字节的虚拟地址,能快速的进行任务切换和任务保护环境;
在保护方式运行的程序分为 4个特权级,0,1,2,3,
操作系统核心运行在最高特权等级 0,用户程序运行在最低特权等级 3。
4级特权保护结构 如图所示:
应用程序
3级常用扩展程序内核
0级
2级系统服务程序
1级系统和应用程序分离
1、保护方式下的寻址机制在保护方式下,一个存储单元的地址也是由 段基地址和 段内偏移量 两部分组成 。
在保护方式下,段基地址也是 32位的,所以就不能由段寄存器的内容直接形成 32位的段基地址,而是要经过转换。于是在内存中就有一个表,每一个内存段对应着表中的一项,此项中包含 32位的段基地址。
在 80x86中,一个段用一个 8字节的描述符来描述,多个描述符构成一个表,称为 描述表 。
由描述符中所规定的段基地址加上 32位的段内偏移量就可以寻址一个存储单元,如图所示 。
段寄存器 偏移量访问权界 限基地址存储器操作数段内基址段界
}选择段大到 4GB
2、描述符表和描述符
( 1)描述符表描述符表定义了访问存贮器的一种数据结构,是存放在存贮器空间中的一种特殊数据段,其表项是由段描述符或其他类型的描述符构成的,每个描述符占 8个字节。
分为三种类型:
全局描述符表( GDT)
局部描述符表( LDT)
中断描述符表( IDT)。
( 2)描述符在保护虚地址方式下的每一个段,都有一个相应的描述符。描述符由 8个字节组成,包含了此段的基地址
( 32位)、段的大小( 20位)、段的类型等一些主要特性。
在 80x86中的描述符有两大类:
段描述符:代码段和数据段描述符系统描述符:特种数据段和控制描述符习 题
1,总线接口部件有哪些功能?请逐一说明。 8086的总线接口部件有那几部分组成?
2,状态标志和控制标志又何不同?程序中是怎样利用这两类标志的? 8086的状态标志和控制标志分别有哪些?
3,段寄存器 CS=1200H,指令指针寄存器 IP=FF00H,此时,指令的物理地址为多少?指向这一物理地址的 CS值和 IP值是唯一的吗?
4,从引脚信号上看,8086和 8088有什么不同?
5,什么是最小模式和最大模式?它们在用途上有什么不同
6,信号的作用是什么?试说明当起始地址为奇地址、
偶地址一次读写一个字节和一个字时,和 A0的状态。
7,根据 8086CPU的存储器读写时序图,请说明:
(1)地址信号应在哪些时间内有效?
(2)读、写动作发生在什么时间内?
(3)为什么读与写数据的有效时间长短不一样?
(4)什么情况下才要插入 Tw周期?它能否加在 T1,
T2之间?
8,在总线周期的 T1,T2,T3,T4状态,CPU分别执行什么动作?什么情况下需要插入等待状态 Tw? Tw
在哪儿插入?怎样插入?
9,画出 8086最小模式的读周期时序。
10,什么叫描述符?他们分为哪几种?各描述符的主要功能是什么?
8086/8088微处理器的结构及指令执行的操作过程
8086/8088在最大和最小模式下引脚功能
8086的操作时序
80x86的实地址方式和虚地址方式
2,1 8086/8088微处理器
2,1,1 8086/8088微处理器的结构及执行程序的操作过程
8086,Intel系列的 16位微处理器,16条数据线,20条地址线,可寻址地址范围 220=1MB,8086工作时,只要一个 5V 电源和一个时钟,时钟频率为 5MHz。
8088,内部与 8086兼容,也是一个 16位微处理器,只是外部数据总线为 8位,所以称为准 16位微处理器。 它具有包括乘法和除法的 16位运算指令,所以能处理 16
位数据,还能处理 8位数据。 8088有 20根地址线,所以可寻址的地址空间达 220即 1M字节。
AH AL
BH BL
CH CL
DH DL
SP
BP
DI
SI
通用寄存器运算寄存器
ALU
标志执行部分控制电路
1 2 3 4 5 6
CS
DS
SS
ES
IP
内部寄存器
I/O
控制电路地址加法器
20位
16位
8位 指令队列缓冲器外总线执行部件 总线接口部件
8086CPU结构图
1、总线接口部件功能:
( 1)、从取指令送到指令队列。
( 2),CPU执行指令时,到指定的位置取操作数,
并将其送至要求的位置单元中。
总线接口部件的组成:
( 1)、四个段地址寄存器
CS,16位代码段寄存器;
DS,16位数据段寄存器;
ES,16位附加段寄存器;
SS,16位堆栈段寄存器。
( 2),16位指令指针寄存器 IP( PC)。
( 3),20位的地址加法器。
( 4)、六字节的指令队列缓冲器。
说明:
( 1)、指令队列缓冲器,在执行指令的同时,将取下一条指令,并放入指令队列缓冲器中。 CPU执行完一条指令后,可以指令下一条指令(流水线技术)。提高 CPU效率。
( 2)、地址加法器,产生 20位地址。 CPU内无论是段地址寄存器还是偏移量都是 16位的,通过地址加法器产生 20位地址。
2、执行部件作用:
( 1)、从指令队列中取出指令。
( 2)、对指令进行译码,发出相应相应的控制信号。
( 3)、接收由总线接口送来的数据或发送数据至接口。
( 4)、进行算术运算。
执行部件的组成:
( 1)、四个通用寄存器 AX,BX,CX,DX。
四个通用寄存器都是 16位或作两个 8位来使用。
( 2)、专用寄存器
SP------堆栈指针寄存器
BP------基址指针寄存器
DI-------目的变址寄存器
SI------- 源变址寄存器
( 3)、算术逻辑单元 ALU
完成 8位或者 16位二进制算术和逻辑运算,计算偏移量。
( 4)、数据暂存寄存器协助 ALU完成运算,暂存参加运算的数据。
( 5)、执行部件的控制电路从总线接口的指令队列取出指令操作码,通过译码电路分析,发出相应的控制命令,控制 ALU数据流向。
( 6)、标志寄存器
16位寄存器,其中有 7位未用。
D15 D0
OF DF IF TF SF ZF AF PF CF
进借位标志奇偶标志半进借位标志零标志符号标志单步中断中断允许方向标志溢出标志
1-有进、借位
0-无进、借位
1-低 8位有偶数个 1
0-低 8位有奇数个 1
1-低 4位向高 4位有进、借位
0-低 4位向高 4位无进、借位
1-结果为 0
0-结果不为 0
3,8086/8088CPU执行程序的操作过程
( 1),20位地址的形成,并将此地址送至程序存储器指定单元,从该单元取出指令字节,依次放入指令队列中。
( 2)、每当 8086的指令队列中有 2个空字节,8088指令队列中有 1个空字节时,总线接口部件就会自动取指令至队列中。
( 3)、执行部件从总线接口的指令队列首取出指令代码,执行该指令。
( 4)、当队列已满,执行部件又不使用总线时,总线接口部件进入空闲状态。
( 5)、执行转移指令、调用指令、返回指令时,先清空队列内容,再将要执行的指令放入队列中。
2,1,2 8086/8088微处理器的引脚功能根据所连的存储器和外设规模的不同,使它们可以在两种模式下工作:
系统的最小模式,只有一 8086/8088CPU。
系统的最大模式,有两个或两个以上的 CPU,一个为主 CPU8086/8088,另一个为协 CPU8087/8089。
指令周期,执行一条指令所需要的时间。
总线周期(机器周期),CPU通过总线与存储器或 I/O
接口进行一次数据传输所需的时间。
T状态(时钟周期),CPU处理动作的最小单位。
T1 T2 T3 TW T4
总线周期而当系统规模较大时,要求有较强的驱动能力,
这样就需要两个获两个以上的微处理器。其中有一个是主处理器 8086或 8088,其它的处理器称为协处理器,
它们协助主处理器工作。例如 8088便通过总线控制器
8288来形成各种控制信号。
如图所示,为 8086CPU和 8088CPU的引脚信号图。
共有 40条引脚线,这些引脚线用来输出或接收各种信号:地址线,数据线,控制线和状态线,电源线和定时线。
由于 8088微处理器是一种准 16位机。其内部结构基本上与 8086相同,其信号也与 8086基本相同,只是有一些引脚的功能有所不同,在这里,我们将以 8086
为例,具体介绍一下 最小模式 下和 最大模式 下各位引脚功能,如出现功能不同的引脚再具体讲解 。
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
GND
AD14/A14
AD13/A13
AD12/A12
AD11/A11
AD10/A10
AD9/A9
AD8/A8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND
VCC( 5V)
AD15/A15
A16/S3
A17/S4
A18/S5
A19/S6
/BHE/S7 HIGH( SSO)
MN//MX
/RD
HOLD( /RQ//GT0)
HLDA( /RQ//GT1)
/WR( /LOCK)
M//IO( /S2)
DT//R( /S1)
/DEN( /S0)
ALE( QS0)
/INTA( QS1)
/TEST
READY
RESET
8086/8088
1、地址 /数据总线
AD15-AD0:地址 /数据复用引脚,双向,三态。
( 8086/8088) AD15-AD0,16位地址总线 A15-A0,输出访问存储器或 I/O的地址信息。
( 8086) AD15-AD0,16位数据总线 D15-D0,与存储器和 I/O设备交换数据信息。
( 8088) AD7-AD0,8位数据总线 D7-D0,与存储器和
I/O设备交换数据信息。
地址 /数据总线复用,分时工作。
2、地址 /状态总线 A19/S6-A16/S3
A19/S6-A16/S3,地址 /状态总线复用引脚,输出,三态。
A19/S6-A16/S3,输出访问存储器的 20位地址的高 4位地址 A19-A16。
A19/S6-A16/S3,输出 CPU的工作状态。
A19/S6-A16/S3,分时工作,T1状态:输出地址的高 4
位信息; T2,T3,T4状态:输出状态信息。
S6,指示 8086/8088当前是否与总线相连,S6=0,表示
8086/8088当前与总线相连。
S5,表明中断允许标志当前的设置。 S5=0,表示 CPU
中断是关闭的,禁止一切可屏蔽中断源的中断请求 ;
S5=1,表示 CPU中断是开放的,允许一切可屏蔽中断源的中断申请。
S4,S3,指出当前使用段寄存器的情况。
S4,S3组合所对应的段寄存器情况
S4 S3 段寄存器
0 0 当前正在使用 ES
0 1 当前正在使用 SS
1 0 当前正在使用 CS
1 1 当前正在使用 DS
3、控制总线
(1),/BHE/S7,高 8位数据总线允许 /状态复用引脚。在总线周期的 T1状态,此引脚输出 /BHE信号,表示高 8
位数据线 D15-D8上的数据有效。
在 T2,T3,TW和 T4状态时,此引脚输出 S7状态信号。
/BHE,A0组合:
/BHE A0 总线使用情况
0 0 从偶地址单元开始,在 16位数据总线上进行字传送
0 1 从奇地址单元开始,在高 8位数据总线上进行字节传送
1 0 从偶地址单元开始,在低 8位数据总线上进行字节传送
1 1 无效
S7,8086中无定义。
8088中,在最大模式中,为高电平;
在最小模式中,输出 SS0信号,此信号与其它信号合作将总线周期的读 /写动作。
( 2),/RD,读信号,三态输出,低电平有效。 /RD=0,
表示当前 CPU正在对存储器或 I/O端口进行读操作。
( 3),/WR,写信号,三态输出,低电平有效 。
/WR=0,表示当前 CPU正在对存储器或 I/O端口进行读操作。
( 4),M//IO,存储器或 IO端口访问信号,三态输出。
M//IO=1,表示 CPU正在访问存储器; M//IO=0,表示
CPU正在访问 IO端口。
( 5),READY,准备就绪信号,输入,高电平有效。
READY=1,表示 CPU访问的存储器或 IO端口已准备好传送数据 。若 CPU在总线周期 T3状态检测到 READY=0,
表示未准备好,CPU自动插入一个或多个等待状态 TW,
直到 READY=1为止。
( 6),INTR,可屏蔽中断请求信号,输入,高电平有效。 当 INTR=1,表示外设向 CPU发出中断请求,CPU
在当前指令周期的最后一个 T状态去采样该信号,若此时,IF=1,CPU响应中断,执行中断服务程序。
( 7),/INTA,中断响应信号,输出,低电平有效。
表示 CPU响应了外设发来的中断申请信号 INTR。
( 8),NMI,不可屏蔽中断请求信号,输入,上升沿触发。该请求信号不受 IF状态的影响,也不能用软件屏蔽,一旦该信号有效,则执行完当前指令后立即响应中断。
( 9),/TEST,测试信号,输入,低电平有效。当
CPU执行 WAIT指令时,每隔个时钟周期对 /TEST进行一次测试,若 /TEST=1,继续等待,直到 /TEST=0。
( 10),RESET:复位信号,输入,高电平有效。
RESET信号至少要保持 4个时钟周期。 复位时:标志寄存器,IP,DS,SS,ES为 0,CS=FFFFH,复位后
CPU从 FFFF0H处开始 执行。
( 11),ALE,地址锁存允许信号,输出,高电平有效。
用来锁存地址信号 A15-A0,分时使用 AD15-AD0地址 /
数据总线。
( 12),DT//R,数据发送 /接收控制信号,三态输出。
此信号控制数据总线上的收发器 8286的数据传送方向,
DT//R=1,发送数据 ----写操作; DT//R=0,接收数据 --
读操作。
( 13),/DEN,数据允许信号,三态输出,低电平有效。作为数据总线上收发器 8286的选通信号。
( 14),HOLD,总线请求信号,输入,高电平有效。
当系统中 CPU之外的另一个控制器要求使用总线时,
通过它向 CPU发一高电平的请求信号。
( 15),HLDA,总线请求响应信号,输出,高电平有效。 当 HLDA有效时,表示 CPU对其它控制器的总线请求作出响应,与此同时,所有与三总线相接的 CPU的线脚呈现高阻抗状态,从而让出总线。
( 16),MN//MX,工作模式选择信号,输入。
MN//MX=1,表示 CPU工作在最小模式系统;
MN//MX=0,表示 CPU工作在最大模式系统。
( 17),CLK,主时钟信号,输入。 8086/8088的时钟频率为 5MHZ。
4、电源线和地线
8086/8088采用单 +5V,1,20引脚为地线。
5、最大模式下的有关引脚
( 1),QS1,QS2:指令队列状态信号,输出。
QS1 QS2 含义
0 0 无操作
0 1 将指令首字节送入指令队列
1 0 队列为空
1 1 将指令其余字节送指令队列
( 2),S2,S1,S0:总线周期状态信号,三态输出。
S2,S1,S0状态信号的编码
S2 S1 S0 操作过程 产生信号
0 0 0 发中断响应信号 /INTA
0 0 1 读 I/O端口 IORC
0 1 0 写 I/O端口 IOWC
0 1 1 暂停 无
1 0 0 取指令 /MRDC
1 0 1 读存储器 /MRDC
1 1 0 写存储器 /AMWC
1 1 1 无作用 无
( 3),/RQ//GT1,/RQ//GT2,总线请求信号
(输入) /总线请求允许信号(输出),双向,
低电平有效。
( 4),/LOCK,总线封锁信号,三态输出,
低电平有效。 /LOCK=0,CPU不允许其它控制器占用总线。
2,1,3 8086/8088系统存储器的组织和堆栈
1,8086/8088系统存储器的组织
8086/8088是 16位的微处理器,在组成存储系统时,总是使偶地址单元的数据通过 AD0 ~AD7传送,而奇地址单元的数据通过 AD8~AD15传送,所有的操作可以是按字节为单位也可以是按字为单位来处理的,但 8086/8088系统中的存储器是以 8位(一个字节)为单位对数据进行处理的。因此每个字节用一个唯一的地址码表示,这称为存储器的 标准结构 。
需要说明的是,在存储器中,任何连续存放的两个字节都可以称为一个字。存放时,其低位字节可从奇数地址开始,这种方式称为非规则方式,奇数地址的字称为 非规则字 。其高位字节可从偶数地址开始,这种方式称为规则方式,。将偶数地址的字称为 规则字 。
( 2) 8086存储器的分段结构由于 8086/8088有 20条地址线,可以寻址多达 220
( 1M)字节,所以把 1M字节的存储器分为任意数量的段,其中每一段最多可达寻址 216( 64K)字节。
8086CPU把 1M字节的存储器空间划分为任意的一些存储段,一个存储段是存储器中可独立寻址的一个逻辑单位,也称逻辑段,每个段的长度为 64K字节。
8086CPU中有四段寄存器,CS,DS,SS和 ES,
这四个段寄存器存放了 CPU当前可以寻址的四个段的基址,也即可以从这四个段寄存器规定的逻辑段中存取指令代码和数据。一旦这四个段寄存器的内容被设定,就规定了 CPU当前可寻址的段。
(3)8086存储器的逻辑地址和物理地址存储器中的每个存储单元都可以用两个形式的地址来表示:
实际地址 (或称 物理地址 )和 逻辑地址 。
实际地址,也称物理地址,是用唯一的 20位二进制数所表示的地址,规定了 1M字节存储体中某个具体单元的地址 。
逻辑地址 在程序中使用,即段地址:偏移地址 。
(4)物理地址的形成物理地址有两部分组成,段基址和偏移地址。
8086/8088CPU中有一个地址加法器,它将段寄存器提供的段地址自动乘以 10H即左移 4位,然后与 16位的偏移地址相加,并锁存在物理地址锁存器中。如图所示。
物理地址 =段基址 * 16 +偏移地址。
段基址,CS,DS,ES,SS。
偏移地址,IP,DI,SI,BP,SP等。
段寄存器值偏移量+
物理地址
16位 4位
16位
20位存储器物理地址的计算方法
CS 0000
IP
代码段
DS或 ES 0000
SI,DI或 BX
SS 0000
SP或 BP
数据段堆栈段存储器段寄存器和偏移地址寄存器组合关系
2,堆栈堆栈主要用于暂存数据和在过程调用或处理中断时暂存断点信息。
( 1)堆栈的概念堆栈是在存储器中开辟的一片数据存储区,这片存储区的一端固定,另一端活动,且只允许数据从活动端进出。采用,先进后出,的规则 。
( 2)堆栈的组织堆栈指示器 SP,他总是指向堆栈的栈顶堆栈的伸展方向既可以从大地址向小地址,也可以从小地址向大地址。 8086/8088的堆栈的伸展方向是从大地址向小地址。
2,2 8086总线的操作时序在微机系统中,CPU是在时钟信号 CLK控制下,按节拍有序地执行指令序列。从取指令开始,经过分析指令、对操作数寻址,然后执行指令、保存操作结果,
这个过程称为 指令执行周期 。
指令周期,执行一条指令所需要的时间。
总线周期(机器周期),CPU通过总线与存储器或 I/O
接口进行一次数据传输所需的时间。
T状态(时钟周期),CPU处理动作的最小单位。
T1 T2 T3 TW T4
总线周期
2,2,2 8086的时序
8086的总线时序包括以下一个部分:
( 1)、系统复位。
( 2)、存储器读操作。
( 3)、存储器写操作。
( 4)、中断响应操作。
( 5)、输入输出周期。
( 6)、空转周期。
总线操作总线读操作,CPU从存储器或外设读取数据。
总线写操作,CPU将数据写入存储器或外设。
1、存储器读周期总线周期包括,T1,T2,T3、( TW),T4机器周期。
( 1),T1周期
M//IO信号,从存储器读还是从 I/O设备中读数据;
AD15-AD0,A19/S7-A16/S3,确定 20位地址;
/BHE,选择奇地址存储体选择。
ALE,地址锁存信号,以使地址 /数据线分开。
( 2),T2状态
A19/S6-A16/S3,出现 S6-S3状态信号。决定段寄存器、
IF状态,8086CPU不否连在总线上。
AD15-AD0,高阻状态。
/RD,由高电平变为低电平,开始进行读操作。
/DEN,变低电平,启动收发器 8268,做好接收数据的准备。
( 3),T3状态
若存储器或 I/O端口已做好发送数据准备,则在 T3状态期间将数据放到数据总线上,在 T3结束时,CPU从
AD15-AD0上读取数据。
( 4),TW状态
在 T3状态,存储器或外设没有准备好数据,不能在 T3
状态将数据放到总线上,使 READY=0,则 CPU在 T3
和 T4之间 插入一个或几个 TW状态,直到 数据准备好
READY=1为止。
TW状态时总线的动作与 T3时相同。
( 5),T4状态
CPU对数据总线进行采样,读出数据。
CPU往存储器或 I/O设备写数据的时序如下页所示:
CLK
T1 T2 T3,TW T4
M//IO
A19/S6-A16/S3 A19-A16/BHE/S7 /BHE S7-S3
ALE
READY
AD15-AD0 地址输出 数据输出
/RD
DT//R
/DEN
CPU从存储器或 I/O端口读取数据的时序
2、存储器写周期
( 1),T1状态
M//IO信号:对 存储器写还是对 I/O设备中写数据;
AD15-AD0,A19/S7-A16/S3,确定 20位地址;
/BHE,选择奇地址存储体选择。
ALE,地址锁存信号,以使地址 /数据线分开。
DT//R,为高电平,指示收发器 8286发送数据,写操作。
( 2),T2状态
A19/S6-A16/S3,出现 S6-S3状态信号。决定段寄存器、
IF状态,8086CPU不否连在总线上。
AD15-AD0,发出 16位数据。
/WR,由高电平变为低电平,开始进行写操作。
/DEN,变低电平,启动收发器 8268,做好发送数据的准备。
( 3),T3状态
若存储器或 I/O端口已做好接收数据准备,则在 T3状态期间将数据放到数据总线上,在 T3结束时,CPU将
AD15-AD0上数据写入到存储器或 I/O设备中。
( 4),TW状态
在 T3状态,存储器或外设没有准备好接收数据,使
READY=0,则 CPU在 T3和 T4之间 插入一个或几个 TW
状态,直到 设备准备好 READY=1为止。
( 5),T4状态在 T4状态,数据从数据总线上被撤除,各种控制信号和状态信号进入无效状态,CPU完成了对存储器或
I/O设备的写操作。
3、输入 /输出周期
8086与外设通讯,也即从外设输入数据,或把数据输出给外设的时序,与 CPU同存储器之间的通讯时序,几乎完全相同,只是 IO/ M信号应为高。所以我们就不赘述。
4、空转周期
8086只有在 CPU于存储器或外设要传送指令或操作时,
才能执行如上所述的总线周期,若 CPU不执行总线周期,则总线接口执行空转操作 。
CLK
T1 T2 T3,TW T4
M//IO
A19/S6-A16/S3 A19-A16/BHE/S7 /BHE S7-S3
ALE
READY
AD15-AD0 地址输出 数据输出
/WR
DT//R
/DEN
CPU往存储器或 I/O端口写数据的时序
5、中断响应周期
中断响应周期,从 CPU中止现行程序转中断服务程序这一过程。
中断响应周期要用两个总线周期。
第一个响应周期:使 AD15-AD0,/BHE/S7,A19/S6-
A16/S3悬空。
第二个响应周期:外设向数据总线上输送一个字节的中断类型号。
每一响应周期的 T1状态输出一个高电平脉冲,作为地址锁存信号。
CLK
T1 T2 T3 T4 T1 T2 T3 T4
第一中断响应周期 第二中断响应周期
ALE
/INTA
AD7-AD0
8086中断响应周期的时序图
6、总线保持和响应周期(保持响应信号 HLDA)
7、系统复位产生,RESET端上的高电平维持 4个时钟周期,可使
CPU复位。
CPU复位:
PSW,DS,ES,SS,IP等寄存器,指令队列 [被清零。
CS寄存器设置为 FFFFH。
注:由于复位后,IF=0,处关中断状态,所以在初始化程序中应开中断,使 CPU可响应中断请求。
当 RESET由高电平变低电平 7个机器周期后,CPU开始从 FFFF0处执行程序。
8086的复位时序:
CLK
RESET输入
RESET内部三态门 浮空
8086CPU复位后总线信号:
AD15-AD0:
A19/S6-A16/S3:
/BHE/S7:
S2,S1,S0:
/LOCK,/RD,/INTA:
ALE,HLDA,QS0,QS1:
/RQ//GT0:
/RQ//GT1:
高阻状态低电平高电平
2,3 80x86的工作模式主要介绍一下 实地址方式 和 保护虚地址方式 。
2,3,1 实地址方式具有 32条地址线的微处理器只有低 20条地址线起作用,
能寻址 1M字节的物理地址。
实地址方式和保护虚地址方式的区分是由控制寄存器
CR0的最低位 PE位决定的。
若 PE位为 0,则工作在实地址方式;
若 PE位为 1,工作在保护虚地址方式 ;
实地址方式下,采用类似于 8086的体系结构。归纳起来,有如下几个特点:
① 寻址机构、存储器管理、中断处理机构和 8086一样
②操作数默认长度为 16位,但允许访问处理器的 32位寄存器组,在使用 32位寄存器组时,指令中要加上前缀以表示越权存取。
③不用虚拟地址的概念,存储器容量最大为 1M字节;
采用分段方式,每段大小固定为 64K字节,存储段可以彼此覆盖,即一个 64K字节的段如未用完,另一个段可以覆盖未用的存储区。
④实地址方式下,存储器中保留两个固定区域,一个为初始化程序区,另一个为中断向量区。前者为
FFFF0H— FFFFFH,后者为 00000— 003FFH。
⑤在实地址方式下,运行的程序不分特权等级,实际上,实地址方式下的程序相当于工作在特权级 0,除保护虚地址方式下的一些专用指令外,所有其他指令都能在实地址方式下运行。
2,3,2 保护虚地址方式在保护方式下,全部 32根地址有效,可寻址达 4G字节的物理空间;
支持多任务,一个任务可运行多达 16KB个段,每个段最大可为 4G字节,故一个任务最大可达 64MM字节的虚拟地址,能快速的进行任务切换和任务保护环境;
在保护方式运行的程序分为 4个特权级,0,1,2,3,
操作系统核心运行在最高特权等级 0,用户程序运行在最低特权等级 3。
4级特权保护结构 如图所示:
应用程序
3级常用扩展程序内核
0级
2级系统服务程序
1级系统和应用程序分离
1、保护方式下的寻址机制在保护方式下,一个存储单元的地址也是由 段基地址和 段内偏移量 两部分组成 。
在保护方式下,段基地址也是 32位的,所以就不能由段寄存器的内容直接形成 32位的段基地址,而是要经过转换。于是在内存中就有一个表,每一个内存段对应着表中的一项,此项中包含 32位的段基地址。
在 80x86中,一个段用一个 8字节的描述符来描述,多个描述符构成一个表,称为 描述表 。
由描述符中所规定的段基地址加上 32位的段内偏移量就可以寻址一个存储单元,如图所示 。
段寄存器 偏移量访问权界 限基地址存储器操作数段内基址段界
}选择段大到 4GB
2、描述符表和描述符
( 1)描述符表描述符表定义了访问存贮器的一种数据结构,是存放在存贮器空间中的一种特殊数据段,其表项是由段描述符或其他类型的描述符构成的,每个描述符占 8个字节。
分为三种类型:
全局描述符表( GDT)
局部描述符表( LDT)
中断描述符表( IDT)。
( 2)描述符在保护虚地址方式下的每一个段,都有一个相应的描述符。描述符由 8个字节组成,包含了此段的基地址
( 32位)、段的大小( 20位)、段的类型等一些主要特性。
在 80x86中的描述符有两大类:
段描述符:代码段和数据段描述符系统描述符:特种数据段和控制描述符习 题
1,总线接口部件有哪些功能?请逐一说明。 8086的总线接口部件有那几部分组成?
2,状态标志和控制标志又何不同?程序中是怎样利用这两类标志的? 8086的状态标志和控制标志分别有哪些?
3,段寄存器 CS=1200H,指令指针寄存器 IP=FF00H,此时,指令的物理地址为多少?指向这一物理地址的 CS值和 IP值是唯一的吗?
4,从引脚信号上看,8086和 8088有什么不同?
5,什么是最小模式和最大模式?它们在用途上有什么不同
6,信号的作用是什么?试说明当起始地址为奇地址、
偶地址一次读写一个字节和一个字时,和 A0的状态。
7,根据 8086CPU的存储器读写时序图,请说明:
(1)地址信号应在哪些时间内有效?
(2)读、写动作发生在什么时间内?
(3)为什么读与写数据的有效时间长短不一样?
(4)什么情况下才要插入 Tw周期?它能否加在 T1,
T2之间?
8,在总线周期的 T1,T2,T3,T4状态,CPU分别执行什么动作?什么情况下需要插入等待状态 Tw? Tw
在哪儿插入?怎样插入?
9,画出 8086最小模式的读周期时序。
10,什么叫描述符?他们分为哪几种?各描述符的主要功能是什么?