32位微机原理-----------处理器

微处理器的程序设计模型

程序可见(program visible)寄存器  8086及以上

编程人员进行程序设计时,能够使用的寄存器。

 

程序不可见寄存器(program invisible80286及以上

在应用程序设计中不能直接访问,但在系统程序设计中可以间接引用或通过特权指令访问     

32位微机原理-----------处理器

 分别是通用寄存器,专用寄存器(标志寄存器,指令指针寄存器,段寄存器)

32位微机原理-----------处理器

通用寄存器

32位微机原理-----------处理器

Pentium 4Core2工作在扩展64位模式使用

通用数据寄存器

可按64位、32位、16位或8位寄存器寻址

EAX(accumulator) 累加器        EBX(base index)基址寄存器

ECX(counter)计数器        EDX(data )数据寄存器

EBP(base pointer)基址指针      ESP(stack pointer)堆栈指针

ESI(source index)源变址寄存器  EDI(destination index)目标变址寄存器

专用寄存器

 64位                                   32位               16位

32位微机原理-----------处理器

RIP/EIP (Instruction pointer) 指令指针寄存器

与代码段寄存器配合,寻址CPU要取出的下一条指令字节.

实模式 — IP (16)

保护模式 — EIP (32) 80386 及以上

64位模式 — RIP (64)

 

RFLAGS/EFLAGS 标志寄存器

指示微处理器的状态并控制它的操作

FLAGS(16-bits)  8086 80286

EFLAGS (32-bits) 80386 及以上

RFLAGS (64-bits)

32位微机原理-----------处理器

实地址模式下,定义了9个标志位,

6个状态标志位,3个控制标志位

状态标志位反映了微处理器的工作状态,算术运算和逻辑运算指令的执行会改变这些标志位的状态;

控制标志位对微处理器的某些特定操作起到控制作用。

 

状态标志

进位标志CFcarry flag

反映加法运算的进位情况或减法运算的借位情况。

当加法运算的最高位有进位或减法运算的最高位有借位,CF1;反之,CF0

辅助进位标志AFauxiliary carry flag

“半进位”标志

反映加减法运算中,第3位与第4位之间的进位或借位情况。如果有进位或借位,AF1,否则清0

BCD码运算中,AF标志位用作十进制调整的依据。

零标志ZFzero flag

反映运算结果是否为零。

如结果为0,则ZF1;否则,ZF0

 

符号标志SFsignal flag

记录运算结果的符号。

SF1,运算结果的最高位(即符号位)为1SF=0,则符号位为0

 

奇偶标志PFparity flag

反映运算结果1的个数是偶数还是奇数。

1的个数为偶数,则PF1;否则,PF0

 

溢出标志OFoverflow flag

反映有符号数运算结果的溢出情况。

如运算结果溢出,则OF1;否则,OF0

溢出是指运算结果超出了有符号数的表示范围。

通常采用双高位判别法来判断运算结果是否溢出,即OF为最高位进位与次高位进位的异或。

最高两位同时有进位/借位或同时无进/借位,OF0;只有一位有进/借位,OF1

 

控制标志

TF (trap)  单步操作标志,或陷阱标志

为程序调试的方便设置的,用于控制单步中断

TF=1,单步工作方式

TF=0,正常执行程序。

 

IF (interrupt) 中断标志

用于控制可屏蔽的硬件中断INTR

IF=1,允许CPU响应可屏蔽中断请求

IF=0,禁止CPU响应可屏蔽中断请求

不影响非屏蔽中断请求(NMI)及内部的中断请求

 

DF (direction) 方向标志

用于控制串操作指令中地址变化的方向

DF=1,串操作指令中的地址寄存器的内容会自动递减,操作由高地址向低地址方向进行

DF=0,则为地址递增方式,串操作由低地址向高地址方向进行。

 

段寄存器 

保存段基址,与其他寄存器或数据配合,形成存储器地址

 

CS (code) 代码段寄存器

存放当前代码段的段基址。代码段是用于存放指令代码的存储区域,当前代码段是指CPU即时访问的代码段。

DS (data)  数据段寄存器

存放当前数据段的段基址。程序执行需要的数据经常存放于数据段中。

ES (extra) 附加段寄存器

存放当前附加段的段基址。附加段是一个附加的数据段,通常也用来存放数据,典型用法是在串操作指令中用来存放处理以后的数据。

SS (stack)  堆栈段寄存器

存放程序当前堆栈段的段基址。堆栈操作所处理的数据均存放于当前堆栈段中,由堆栈段寄存器SS和堆栈指针SP共同确定堆栈操作将要访问的存储单元地址。

段寄存器FSGS

仅存在于80386及更高型号的微处理器中,对应两个附加的存储段,通常也用来存放数据。.

微处理器的工作模式

8086/8088微处理器只有一种工作模式,即实地址模式。

80286可以工作在实地址模式和保护模式两种工作模式下,

80386以上的32位微处理器具有三种工作模式:实地址模式、保护模式和虚拟8086模式。

 

实地址模式(real-address mode

也称为实模式

32位微处理器的工作方式与8086基本相同,但允许访问32位寄存器组

采用分段寻址方式,寻址1MB的存储器地址空间,不能管理和使用扩展存储器

寻址机制、存储器访问范围和中断控制等都与8086CPU相同

DOS操作系统要求微处理器工作在实地址模式,计算机系统的初始化和引导程序也必须在实地址模式下运行

 

保护模式(protect mode

也称为保护的虚地址模式,支持多任务

保护模式提供了一系列的保护机制,为多任务操作系统的设计提供了有力的支持。

Windows操作系统在保护模式下运行。

支持虚拟存储器

在保护模式下,CPU32根地址线均有效,可以访问4GB的物理存储空间,以及64TB的虚拟存储空间

 

虚拟8086模式(virtual 8086 mode

又称V86模式

V86模式下,CPU运行在保护机制中,但存储器寻址与8086相同,是一种既有保护功能又能执行8086代码的工作模式。

32位微机原理-----------处理器

实地址模式下的存储器分段寻址

为什么要分段寻址

实模式下

20位地址总线访问存储器

可寻址的存储空间为220=1MB

地址范围是00000H~FFFFFH

微处理器使用16位寄存器,指令给出16位地址信息

存储器分段技术

 

1M字节的存储单元划分为若干个逻辑段,每个逻辑段的最大容量为64KB

逻辑段的起始:地址低4位为全0的存储单元,该存储单元的地址称为段首地址,通常为xxxx0H,低4位为0,高16位为有效数字。

段基址(segment base address:段首地址的高16位,通常保存在16位段寄存器

偏移地址(offset address):逻辑段中任意一个存储单元的地址相对于段首地址的字节距离(即偏移量)

可用16位二进制数表示,范围是0000H~FFFFH

 

存储器的分段结构

32位微机原理-----------处理器

 

 

 存储器的分段逻辑结构

32位微机原理-----------处理器 

物理地址:存储器中存放的实际地址

逻辑地址:编程时使用的地址,由段基址和段内偏移地址组成

习惯上写成“段基址:偏移地址”。

例如,1000H0050H

 

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

32位微机原理-----------处理器 

注意:每个存储单元都有一个唯一的物理地址,但根据逻辑段划分的不同,它可能有多个不同的逻辑地址

32位微机原理-----------处理器 

 

INTEL8086微处理器 

32位微机原理-----------处理器

执行单元EU(Execute Unit) 

负责指令的执行,从BIU的指令流队列中取指令,分析指令和执行指令。

组成部分:

1)算术逻辑单元(ALU

216位标志寄存器FLAGS

3)寄存器阵列

通用寄存器AXBXCXDX

专用寄存器:指针寄存器SPBP和变址寄存器SIDI

4)数据暂存器

5EU控制电路是控制、定时状态逻辑电路,根据指令译码形成各种定时控制信号,对EU的各个部件实现特定的定时操作。

总线接口单元BIU(Bus Interface Unit)

 

负责CPU与存储器或CPUI/O设备之间传送数据。

组成部分:

416位段寄存器、116位指令指针IP1个指令流队列、20位地址加法器和总线控制电路

 

1)长度为6个字节的指令流队列

BIUEU组成取指令和执行指令的两级流水,通过并行操作,提高了系统的工作速度。

2)地址加法器用来产生20位地址

寄存器阵列

 

EU单元

416位通用寄存器:累加器AX,基址寄存器BX,计数器CX,数据寄存器DX

可作为16位寄存器,也可作为8位寄存器使用。

8位: AHALBHBLCHCLDHDL

216位指针寄存器:堆栈指针SP和基址指针BP

2个变址寄存器:

     源变址寄存器SI和目标变址寄存器DI

16位状态标志寄存器FLAGS

定义了9个标志位

6位状态标志:

进位标志CF、奇偶标志PF、辅助进位标志AF、零标志ZF、符号标志SF、溢出标志OF

3位控制标志:

中断允许标志IF、方向标志DF和单步操作标志TF

 

BIU单元

16位指令指针寄存器IP

用于存放下一条将要取出的指令字节在当前代码段内的偏移地址。IP寄存器不能由程序员直接访问。

 

4个段寄存器CSDSSSES

分别用来存放当前代码段、当前数据段、当前堆栈段以及当前附加段的段基址。

32位微机原理-----------处理器32位微机原理-----------处理器

最小工作模式下引脚信号

32位微机原理-----------处理器

工作模式下引脚信号

32位微机原理-----------处理器