第3章 80x86微处理器

时间:2024-03-21 11:54:17

3.1   80x86微处理器简介

      80x86微处理器是美国Intel公司生产的系列微处理器。从8086开始到目前已进入第五代微处理器:80868088)、80286803868048680586PentiumPentiumⅡ~)。其主要发展特点是:

    1.主频80864.77MHz80586166MHzPentiumⅡ~更高,可达3GHz。主频是指芯片所使用的主时钟频率,它直接影响计算机的运行速度。

    2. 数据总线808616位到8058664位。数据总线是计算机中组成各部件间进行数据传送时的公共通道。其位数(宽度)表示CPU的字长,数据总线位数越多,数据交换的速度越快。

    3.地址总线808620根到8058632根。地址总线是在对存储器或IO端口进行访问时,传送由CPU提供的要访问的存储单元或I/O端口的地址信息总线,其宽度决定了处理器能直接访问的主存容量大小。

   4.高速缓冲存储器Cache的使用,大大减少了CPU读取指令和操作数所需的时间,使CPU的执行速度显著提高。从80386以后增加了高速缓冲存储器Cache

  微机系统增加了高速缓冲存储器后,使系统的存储器体系形成三级组织结构,即由高速缓冲存储器Cache、主存和外存组成。如图3.1所示。

第3章 80x86微处理器

关于cache

        为了解决对存储器要求容量大,速度快,成本低三者之间的矛盾,目前通常采用多级存储器体系结构,即使用高速缓冲存储器、主存储器和外存储器

名 称

简称

用  途

  特 点

高速缓冲存储器

Cache

高速存取指令和数据

存取速度快,但存储容量小

主存储器

主存

存放计算机运行期间的大量程序和数据

存取速度较快,存储容量不大

外存储器

外存

存放系统程序和大型数据文件及数据库

存储容量大,位成本低

局部性原理

时间局部性:一个数据(或指令)被访问,在不久的将来,很可能被再次使用;
空间局部性:一个数据(或指令)被访问,它附近的数据可能很快就会被使用。

  所以,层次结构的存储器系统,可以将最近访问过的内容放入Cache,将近期访问过内容所属的整个块放入Cache

1.CacheR是一样的吗?
R是指令中可用名字访问的,对程序员是可见的
Cache对程序员是透明的

Cache的引入

引入cache的原因:

大容量主存一般采用DRAM,相对SRAM速度慢,而SRAM速度快,但价格高。
程序和数据具有局限性,即在一个较短的时间内,程序或数据往往集中在很小的存储器地址范围内。

    
    
因此,在主存和CPU之间可设置一个速度很快而容量相对较小的存储器,在其中存放CPU当前正在使用以及一个较短的时间内将要使用的程序和数据,这样,可大大加快CPU访问存储器的速度,提高机器的运行效率。

     80x86CPU在发展过程中,存储器的管理机制也发生了较大变化。

  8086/8088CPU:分段实方式

  80286CPU:分段实方式、保护方式(可提供虚拟存储管理和多任务管理机制)。

  80386~80586CPU:分段实方式、保护方式、虚拟8086方式(可同时模拟多个8086处理器工作)。

     虚拟存储管理:为用户提供一个比实际主存空间大得多的程序地址空间,从而可使用户程序的大小不受主存空间的限制。

  多任务管理:可允许多个用户或一个用户的多个任务同时在机器上运行。

3.2 8086/8088微处理器

80888086基本类似
16CPU
AB宽度20位,可以直接寻址2201M个存储单元和64KIO端口。
指令格式均相同
80888086差别:
指令队列缓冲器:80884字节,80866字节
内部数据总线引脚:80888根,808616根,8086是真正的16位机,而8088是准16位机,8088为准16CPU,内部DB16位,但外部仅为8位,16位数据要分两次传送
部分引脚不同
设计原因:
Intel8088是准16位处理器,其指令系统与8086完全兼容,CPU内部结构仍为16位,但外部数据总线是8位。这样设计的目的主要是与原有的8位外围接口芯片兼容。
程序的执行过程
第3章 80x86微处理器

指令预取队列(IPQ)

指令的一般执行过程:

 取指令    指令译码   读取操作数   

     执行指令    存放结果

串行工作方式:

第3章 80x86微处理器

 1CPU访问存储器(存取数据或指令)时要等待总线操作的完成

 2CPU执行指令时总线处于空闲状态

 缺点:CPU无法全速运行

 解决:总线空闲时预取指令,使CPU需要指令时能立刻得到

并行工作方式:

8086CPU采用并行工作方式
第3章 80x86微处理器

8086如何实现并行工作方式

8086的结构

       8086微处理器为了充分使用总线以提高程序的执行速度被设计成为两个独立的功能部件:执行部件(EU)和总线接口部件(BIU)。

第3章 80x86微处理器
BIU不断地从存储器取指令送入IPQEU不断地从IPQ取出指令执行
EUBIU构成了一个简单的2工位流水线
指令预取队列IPQ是实现流水线操作的关键(类似于工厂流水线的传送带)
新型CPU将一条指令划分成更多的阶段,以便可以同时执行更多的指令
例如,PIII14个阶段,P420个阶段(超级流水线)
结论

指令预取队列的存在使EUBIU两个部分可同时进行工作,从而带来了以下两个好处:
提高了CPU的效率
降低了对存储器存取速度的要求
总线接口单元BIU

BusInterface Unit
组成:

    总线接口部件由段寄存器、指令指针、地址形成逻辑、总线控制逻辑和指令队列等组成。

任务:

    BIU与外部总线连接为执行部件EU完成所有的总线操作,并计算形成20位的内存物理地址。

功能:

   负责完成CPU与存储器(内存或主存)或I/O设备之间的数据传送。

       ① 取指令到指令队列缓冲器

       ② 从内存或外设端口读取数据

       ③ 向内存或外设端口发送数据

       ④ 形成20位物理地址

   俗称完成“外勤”工作。

在执行转移程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给执行单元执行。
第3章 80x86微处理器

段寄存器(SegmentRegister)

   8086系统中把可直接寻址的1MB内存空间分为称作“段”的逻辑区域,段的段地址由称为“段寄存器”的416位寄存器决定:

   (1)    代码段寄存器CS(16)

   (2)    堆栈段寄存器SS(16)

   (3)    数据段寄存器DS(16)

   (4)    附加段寄存器ES(16)

第3章 80x86微处理器

指令指针寄存器IP(16)

    指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动指向下一条指令。

地址加法器的作用

逻辑地址和物理地址

   ⑴ 逻辑地址:由段地址(逻辑段起始地址的高16位)和偏移地址(16位)表示的存储单元的地址称为逻辑地址,记为:

   段地址∶偏移地址

   ⑵ 物理地址:由CPU内部总线接口单元BIU中的地址加法器根据逻辑地址产生的20位存储单元地址称为物理地址。

第3章 80x86微处理器

指令队列缓冲器

    指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动指向下一条指令。

执行单元EU

Execution Unit
组成:

    执行部件EU由通用寄存器、标志寄存器、运算器(ALU)EU控制系统等组成。

任务:

       ① 向BIU提供所需要访问的内存或IO端口的地址,

       ② 对通用寄存器、标志寄存器和指令操作数进行管理。

v功能:执行指令

  

  从指令队列中取指令代码    -->    译码-->

  ALU中完成数据的运算   -->      运算结果

  的特征保存在标志寄存器FLAGS中。

第3章 80x86微处理器

第3章 80x86微处理器

偏移地址和段寄存器的默认关系

CS ——IP
DS ——BXSIDI,位移量
SS ——BPSP
ES ——DI(串操作)

第3章 80x86微处理器

3.38086/8088的寄存器、存储器和I/O组织

   一、 8086/8088寄存器结构

   8086/8088微处理器中可供程序员使用的有1416位寄存器,这14个寄存器按其用途可分为通用寄存器、指令指针、控制寄存器和段寄存器等4类。

第3章 80x86微处理器

   1. 通用寄存器

   8个通用寄存器,可分为两组。

   (1)数据寄存器。

     累加器   AX(16)→AHAL(高、低各8位)

     基址寄存器BX(16)→BHBL(高、低各8位)

     计数寄存器CX(16)→CHCL(高、低各8位)

     数据寄存器DX(16)→DHDL(高、低各8位)

    数据寄存器的特点是,这416位寄存器可分为高8(AHBHCHDH)与低8(ALBLCLDL),这两组8位寄存器可分别寻址、独立操作。

    (2) 指针寄存器和变址寄存器。另外4个通用寄存器是:

         堆栈指针SP(16)

        基址指针BP(16)

        源变址寄存器SI(16)

        目的变址寄存器DI(16)

   416位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址。

    2. 控制寄存器

(1)指令指针寄存器IP(16)

    指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动指向下一条指令

(2) 标志寄存器FLAG(16)

    8086/8088有一个16位的标志寄存器FLAGS,在FLAGS中有意义的有9位,其中6位是状态位:CFPFAFZFSFOF3位是控制位:TFIFDF

标志寄存器(Flags)

第3章 80x86微处理器

状态标志:表示处理器当前运行的状态。

CF(Carry Flag)——进位标志,当进行加减运算时,若最高位发生进位或错位,则CF为1,否则为0。该标志通常用于判断无符号数运算结果是否超出了计算机所能表示的无符号数的范围

AF(Auxiliary Flag)——辅助进位标志,低4位向前有进()位,AF=1

ZF(Zero Flag)——零标志,若当前运算结果为0ZF=1

SF(Sign Flag)——符号标志,最高位的值为1时,SF=1

OF(Overflow Flag)——溢出标志,当运算结果超出了带符号数所能表示的数值范围,即溢出时,OF=1。该标志位通常用来判断带符号数运算结果是否溢出

PF(Parity Flag)——/偶标志,运算结果低8位中1的个数为偶数个,PF=1

控制标志:控制处理器的某一特定功能。

IF——可屏蔽中断允许标志,IF=1表示允许

DF——方向标志,DF=0地址增量变化;DF=1地址减量变化

TF——陷阱标志(单步执行标志)

标志寄存器举例

第3章 80x86微处理器

最高位向前没有进位,CF=0

8位中偶数为4个, PF=1

4位向前有进位,  AF=1

运算结果不为0,    ZF=0

最高位=1,         SF=1

次高位向前有进位,  OF=Cs  Cp=1(∵Cs=0,Cp=1)

    二、8086微处理器的引脚功能

    8086微处理器是Intel公司的第三代微处理器16位微处理器,它采用40引脚的DIP(双列直插)封装。时钟频率有3种:5MHz(8086)8MHz(8086-1)10MHz(8086-2)

 1.引脚功能说明

    808640条引脚信号按功能可分为4部分地址总线、数据总线、控制总线以及其他(时钟与电源)

引脚分类

引脚定义的方法可大致分为:

每个引脚只传送一种信息(RD等);
引脚电平的高低不同的信号(IO/M等);
CPU工作于不同方式有不同的名称和定义(WR/LOCK等);
分时复用引脚(AD7AD0等) ;
引脚的输入和输出分别传送不同的信息(RQ/GT等)。
第3章 80x86微处理器

地址总线和数据总线(20条)

vAD15~AD0为地址/数据总线,A19~A16S6~S3为地址/状态总线。其中:
v数据总线用来在CPU与内存储器(IO设备)之间交换信息,为双向、三态信号;
v地址总线由CPU发出,用来确定CPU要访问的内存单元(IO端口)的地址信号,为输出、三态信号。

电源地线及时钟

vCLK:时钟信号(输入)。该信号为8086CPU提供基本的定时脉冲,其占空比为1∶3(高电平持续时间:重复周期=1∶3),以提供最佳的内部定时。
vVcc:电源(输入),要求接上正电压(+5V±10)
vGND:地线、两条接地线。

控制总线(16条)

   控制总线是传送控制信号的一组信号线,有些是输出线,用来传输CPU送到其他部件的控制命令(如读、写命令,中断响应等);有的是输入线,由外部向CPU输入控制及请求信号(复位、中断请求等)

工作方式和RESET

vRESET:输入,为高时,CPU执行复位;
vMN/MX:工作方式控制,高电平为最小工作方式,单CPU工作,低电平为最大工作方式,多处理器合作。

中断相关的引脚

vNMI:非屏蔽中断请求信号,不受flags中中断允许标志位IF的影响;
vINTR:可屏蔽中断请求信号,如果有效,再查看IF信息;
vINTA:中断响应信号,对于INTR信号做出响应;

读写内存的信号

vRD:读控制信号;
vWR:写控制信号;
vM/IO:指出当前访问的是存储器还是I/O接口。

     低:I/O接口,高:内存;

vREADY: 表示数据准备好的信号,CPUT3状态查询该信号,如果有效,说明数据已经准备好,否则插入若干个等待状态Tw
vWR=1RD=0M/IO =1时,表示CPU当前正在           

最小工作方式

vBHE/S7:高8位数据总线允许信号;低,表示高8位有效,高:表示低8位有效;
vALE:地址锁存信号;在T1结束的时候,ALE由高向低跳变时锁存。高:AB地址有效;
vDT/ R:三态,输出。数据传送方向,高:CPU输出,低:CPU输入;
vDEN:三态,输出。低电平时,表示DB上的数据有效;

其余引脚

vHOLD:总线请求信号,当8086CPU之外的总线主设备要求占用总线时,通过该引脚向CPU发送一个高电平;
vHLDA:总线请求相应信号,当CPU收到HOLD信号,如果CPU允许让出总线,就在当前总线周期完成时,T4状态发送一个HLDA信号,此时发送了HOLD信号的设备获取总线使用权;
vTEST:用于使CPU与外部硬件同步,当CPU在执行WAIT指令时,CPU会对该引脚进行测试。
 2.8088的引脚与8086的区别

⑴8088的地址/数据复用线为8条,即AD7~AD0,而A15~A8为单一的地址线。
    8088中无BHES7信号,该引脚为SS0—状态信号线。
    8088的存储器/输入输出控制线为IO/M,即该信号为高电平时是IO端口访问,为低电平时是存储器访问,这与8086M/IO线正好相反。

3. 最小方式与最大方式

    ⑴ 最小方式下的基本配置

    8086CPUMNMX引脚接+5V电源时,8086CPU工作于最小方式,用于构成小型的单处理机系统。在这种方式中,除8086CPU以及信息传送对象存储器和IO接口电路外,还有三部分支持系统工作的器件:时钟发生器、地址锁存器和数据收发器。

第3章 80x86微处理器

最大方式下的基本配置

   8086CPUMNMX引脚接地时,8086CPU工作于最大方式,用于构成多处理机和协处理机系统。同最小方式下8086系统配置相比较,最大方式系统增加了一片专用的总线控制芯片8288

第3章 80x86微处理器

   三、8086微处理器的总线时序

   1.总线时序

   ⑴ 指令周期

   每条指令的执行由取指令、译码和执行等操作组成,执行一条指令所需要的时间称为指令周期(InstructionCycle),不同指令的指令周期是不等长的,一个指令周期由一个或若干个总线周期组成。

    总线周期

   8086CPU与外部交换信息总是通过总线进行的。CPU的每一个这种信息输入、输出过程所需要的时间称为总线周期(BusCycle),一般一个总线周期由四个时钟周期组成。

   ⑶ 时钟周期

   时钟脉冲的重复周期称为时钟周期(ClockCycle)。时钟周期是CPU的时间基准,由计算机的主频决定。如8086的主频为5MHz1个时钟周期就是200ns

   2. 几种基本时序

第3章 80x86微处理器

   总线读操作时序

   8086CPU 进行存储器或I/O端口读操作时,总线进入读周期。基本的读周期由4个时钟周期组成:T1T2T3T4CPUT3T4之间从总线上接收数据。当所选中的存储器和外设的存取速度较慢时,则在T3T4之间将插入1个或几个等待周期TW。图3.38086最小方式下的总线读操作时序图。下面对图中表示的读操作时序进行说明。

第3章 80x86微处理器

    总线写操作时序

   总线写操作就是指CPU向存储器或IO端口写入数据。图3.48086在最小模式下的总线写操作时序图。   

    总线写操作时序与总线读操作时序基本相同,但也存在以下不同之处:

第3章 80x86微处理器

    (a) 对存储器或IO端口操作的选通信号不同。总线读操作中,选通信号是RD,而总线写操作中是WR

    (b)T2状态中,AD15~AD0上地址信号消失后,AD15~AD0的状态不同。总线读操作中,此时AD15~AD0进入高阻状态,并在随后的状态中保持为输入方向;而在总线写操作中,此时CPU立即通过AD15~AD0输出数据,并一直保持到T4状态中。

    中断响应操作时序

   8086CPUINTR引脚上有一有效电平(高电平),且标志寄存器IF=1,则8086CPU在执行完当前的指令后响应中断,在响应中断时CPU执行两个中断响应周期。图3.58086在最小模式下的中断响应操作时序图。

  第3章 80x86微处理器 

    CPU的中断响应周期包括两个总线周期,在每个总线周期中都从INTA端输出一个负脉冲,其宽度是从T2状态开始持续到T4状态的开始。第一个总线周期的INTA负脉冲,用来通知中断源,CPU准备响应中断,中断源应准备好中断类型码,在第二个总线周期的INTA负脉冲期间,外设接口(一般经中断控制器)应立即把中断源的中断类型码送到数据线的低8AD7AD0上。 

    二、8086/8088存储器组织

   1.存储器组织

   8086/8088微处理器有20条地址线,可以配置1MB的内存储器。存储空间都按8(即字节)进行组织,每个存储单元存储一个字节数据,若存放数据(16),则存放在相邻两个存储单元中,高字节存放在高地址单元,低字节存放在低地址单元。每个存储单元都有一个20位的地址,这1 M个存储单元对应的地址为00000H~FFFFFH,如图3.10所示。

    一个存储单元中存放的信息称为该存储单元的内容。

    00001H单元的内容为9FH,记为:(00001H)=9FH

    如从地址0011FH开始的两个连续单元中存放一个字型数据,则该数据为DF46H,记为:(0011FH)=DF46H

第3章 80x86微处理器

    80861M存储空间实际上分为两个512KB的存储体,又称存储库,分别叫高位库和低位库。

第3章 80x86微处理器

    地址总线A19~A1可同时对高、低位库的存储单元寻址,A0BHE用于对库的选择。

    A00时,选择偶数地址的低位库;

    BHE0时,选择奇数地址的高位库;

    当两者均为0时,则同时选中高低位库。

    需注意的是,对于规则字(从偶数地址开始存放的字)的读/写操作只需一个总线周期,而非规则字(从奇数地址开始存放的字)的读/写操作需两个总线周期。

第3章 80x86微处理器

    3.14  8086存储器的偶数和奇数地址读字节和字

(a)读偶地址单元中的字节;(b)读奇地址单元中的字节;

(c)   读偶地址单元中的字;    (d) 读奇地址单元中的字

    2. 存储器分段

    80868088CPU中有关可用来存放地址的寄存器如IPSPSIDIBP等都是16位的,故只能直接寻址64KB。为了对1M个存储单元进行管理,80868088采用了段结构的存储器管理方法。

    80868088将整个存储器分为许多逻辑段,但只有4种类型:代码段、数据段、堆栈段和附加段。每个逻辑段的容量小于或等于64KB,允许它们在整个存储空间中浮动。各个逻辑段之间可以紧密相连,也可以互相重叠(局部重叠和完全重叠),还可以相互隔开。

第3章 80x86微处理器

   3. 逻辑地址和物理地址

   ⑴ 逻辑地址:由段地址(逻辑段起始地址的高16位)和偏移地址(16位)表示的存储单元的地址称为逻辑地址,记为:

   段地址∶偏移地址

   ⑵ 物理地址:由CPU内部总线接口单元BIU中的地址加法器根据逻辑地址产生的20位存储单元地址称为物理地址。如图3.7所示。

   物理地址和逻辑地址的关系为:

   物理地址=段地址×10H+偏移地址

在程序设计中,段地址是由段寄存器(如CSDSSSES)提供,偏移地址通常是由地址寄存器(如IPBXBPSPSIDI等)及立即数等提供。

第3章 80x86微处理器

 对于任何一个物理地址来说,可以唯一被包含在一个逻辑段中,也可以包含在多个重叠的逻辑段中,只要能得到它所在段的首地址和段内的相对地址,就可以对它进行访问。即一个物理地址可以对应多个逻辑地址。

第3章 80x86微处理器

4.堆栈操作

80868088系统中的堆栈使用段定义语句在存储器中定义的一个堆栈段,和其它逻辑段一样,它可以在1M字节的存储空间中浮动,其容量可达64KB,这是一个具有先进后出特性的存储区域,且属于向下生长的堆栈。

 堆栈由SSSP来寻址。SS给出堆栈段的段地址,而SP给出当前栈顶(偏移地址),即指出从段地址到栈顶的偏移量。

若已知当前SS1050HSP0008HAX1234H,则8086系统中堆栈的入栈和出栈操作如下图所示。

第3章 80x86微处理器

  三、8086/8088I/O组织

   80868088系统和外部设备之间是通过IO接口电路来联系的。每个IO接口都有一个或几个端口。在微机系统中每个端口分配一个地址号,称为端口地址。一个端口通常为I/O接口电路内部的一个寄存器或一组寄存器。

   8086/8088CPU用地址总线的低16位作为对8IO端口的寻址线,所以80868088系统可访问的8IO端口有65536(64K)个。两个编号相邻的8位端口可以组成一个16位的端口。

   8086CPUIO设备的读写与对存储器的读写操作类似。当CPU与偶地址的IO设备实现16位数据的存取操作时,可在一个总线周期内完成;当CPU与奇地址的IO设备实现16位数据的存取操作时,要占用两个总线周期才能完成。


1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。

      答:(1) BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。

             (2) EU的作用:执行指令,并为BIU提供所需的有效地址。

             (3) 并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令队列中。这样就实现了取指和执行指令的并行工作。

   

2.8086/8088CPU内部有哪些寄存器?其主要作用是什么?

      答:80868088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。其主要作用是:

             (1) 数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。

           AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的IO指令都使用该寄存器与外设端口交换信息。  

           BX(Base)称为基址寄存器。用来存放操作数在内存中数据段内的偏移地址,

           CX(Counter)称为计数器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化,有利于提高程序的运行速度。  

           DX(Data)称为数据寄存器。在寄存器间接寻址的IO指令中存放IO端口地址;在做双字长乘除法运算时,DXAX一起存放一个双字长操作数,其中DX存放高16位数。

             (2) 地址寄存器:一般用来存放段内的偏移地址。

            SP(Stack Pointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSHPOP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。

           BP(Base Pointer)称为基址寄存器。作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。

           SI(Source Index)称为源变址寄存器。SI存放源串在数据段内的偏移地址。

             DI(Destination Index)称为目的变址寄存器。DI存放目的串在附加数据段内的偏移地址。

             (3) 段寄存器:用于存放段地址

           CS(Code Segment)称为代码段寄存器,用来存储程序当前使用的代码段的段地址。 CS的内容左移4位再加上指令指针寄存器IP的内容就是下一条要读取的指令在存储器中的物理地址。

           DS(Data Segment)称为数据段寄存器,用来存放程序当前使用的数据段的段地址。 DS的内容左移4位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址。

           SS(Stack Segment)称为堆栈段寄存器,用来存放程序当前所使用的堆栈段的段地址。堆栈是存储器中开辟的按“先进后出”原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程序时保护断点和现场。

           ES(Extra Segment)称为附加数据段寄存器,用来存放程序当前使用的附加数据段的段地址。附加数据段用来存放字符串操作时的目的字符串。

             (4) 控制寄存器

           IP(Instmcdon Pointer)称为指令指针寄存器,用来存放下一条要读取的指令在代码段内的偏移地址。用户程序不能直接访问IP

           FLAGS称为标志寄存器,它是一个16位的寄存器,但只用了其中9位,这9位包括(个状态标志位和3个控制标志位。它用来反映算术运算和逻辑运算结果的一些特征,或用来控制CPU的某种操作。

 

3.8086/8088CPU中有哪些寄存器可用来指示操作数在存储器中某段内的偏移地址?

      答:可用来指示段内偏移地址的寄存器共有6个:IPSPBPBXSIDI

 

4.8086/8088CPU中标志寄存器FLAGS有哪些标志位?它们的含义和作用如何?

      答:标志寄存器中的标志共有9个,分为两类:状态标志6个和控制标志3个。其作用是:

             (1) 状态标志:用来反映算术和逻辑运算结果的一些特征。

           CF(Carry Flag)—进位标志位。当进行加减运算时,若最高位发生进位或借位,则CF1,否则为0。该标志位通常用于判断无符号数运算结果是否超出了计算机所能表示的无符号数的范围。

           PF(Parity Flag)—奇偶标志位。当指令执行结果的低8位中含有偶数个1,PF1,否则为0

           AF(Auxiliary Flag)—辅助进位标志位。当执行一条加法或减法运算指令时,若结果的低字节的低4位向高4位有进位或借位,则AF1,否则为0

           ZF(Zero Flag)—零标志位。若当前的运算结果为0,则ZF1,否则为00

           SF(Sign Flag)—符号标志位。当运算结果的最高位为1时,SF=1,否则为00

           OF(Overflow Flag)—溢出标志位。当运算结果超出了带符号数所能表示的数值范围,即溢出时,OF=1,否则为0。该标志位通常用来判断带符号数运算结果是否溢出o

            (2)控制标志位:用来控制CPU的操作,由程序设置或清除。它们是:

            TF(TrapFlag)—跟踪(陷阱)标志位。它是为测试程序的方便而设置的。若将TF180868088CPU处于单步工作方式,否则,将正常执行程序。

           IP(Interrupt Flag)—中断允许标志位。它是用来控制可屏蔽中断的控制标志位。若用STI指令将IF1,表示允许CPU接受外部从INTR引脚上发来的可屏蔽中断请求信号;若用CLI指令将IP0,则禁止CPU接受可屏蔽中断请求信号。IF的状态对非屏蔽中断及内部中断没有影响。

           DF(DirectionFlag)—方向标志位。若用STDDF1,串操作按减地址方式进行,也就是说,从高地址开始,每操作一次地址自动递减;若用CLDDF0,则串操作按增地址方式进行,即每操作一次地址自动递增。

 

5.8086/8088CPU的地址总线有多少位?其寻址范围是多少?

      答:8086/8088地址总线有20根,寻址范围1MB

 

6.什么叫指令队列?8086/8088CPU中指令队列有什么作用?其长度分别是多少?

      答:(1) 指令队列:采用“先进先出”原则,按顺序存放预执行指令的缓冲器称为指令队列。

           (2) 指令队列的作用:存放EU将要执行的指令,使CPU的取指和执行指令能并行工作。

             (3) 指令队列的长度:80866个字节,80884个字节。

 

7.Intel8086与8088有何区别?

      答:80868088的区别有三处:

             (1) 外部数据总线位数不同(即地址/数据分时复用引脚条数不同);

                    808616位:AD15AD0 

                    8088 8位:AD7AD0

             (2) 内部指令队列缓冲器长度不同;

                    80866个字节。当指令队列出现2个空字节时,BIU将取指补充。

                    80864个字节。当指令队列出现1个空字节时,BIU将取指补充。

             (3) 外部某些控制总线定义不同。

                 808628号引脚定义为MIO(S2)8088定义为IOM(S2)

                 808634号引脚定义为BHES78088定义为SS0(HIGH)

 

8.简述8086 CPU使用地址锁存信号ALE将地址A15~A0与数据D15~D0分开的工作原理。

      答:在任何一个总线周期的T1状态,ALE均为高电平,以表示当前地址/数据复用线上的输出的是地址信息,在ALE由高变低的下降沿时把地址装入地址锁存器,而在T2T3T4状态,ALE均为低电平,以表示当前地址/数据复用线上的输出的是数据信息,此时通过数据收发器进行传送。

 

9.什么是逻辑地址?什么是物理地址?若已知逻辑地址为BA00:A800,试求物理地址。

      答:逻辑地址:由段地址和偏移地址表示的存储单元地址称为逻辑地址。

             物理地址:CPU对存储器进行访问时实际所使用的20位地址称为物理地址。

               逻辑地址为BA00H:A800H

               物理地址=BA00H×10HA800HC4800H

 

10.简述堆栈指针寄存器SP的功能及堆栈的操作过程。

      答:(1) SP的功能:指示进栈和出栈操作时的偏移地址。

             (2) 堆栈的操作过程:进栈时,先将SP2,再将数据压入堆栈(即先移后入);出栈时,先将数据弹出堆栈,再将SP+2(即先出后移)。