微机原理 第二章:微处理器及其体系结构


微机原理 第二章:微处理器及其体系结构

2.1 微处理器的主要性能指标

字长

计算机一次所能处理的数据的位数(8位机、16位机)

  • 字长决定了PC机的运算能力和运算精度;
  • 字长由CPU数据总线的条数决定;
  • 字长决定了通用寄存器、运算器和内部缓冲器的位数。

运算速度

  • 基本指令的执行时间;
  • CPU主频的大小决定的运算速度的大小。

访存空间

  • 微处理器所能访问的存储单元数(存储容量);
  • 存储单元数由地址总线条数决定。

2.2 8086微处理器

2.2.1 8086内部结构

8086CPU内部从功能上看有两个独立的工作部件:

这样可以使取指令和执行指令同时进行,提高运算速度。

①. 执行部件EU(Execution Unit)
作用:负责指令的执行,不与外部总线打交道。

②. 总线接口部件BIU(Bus Interface Unit)
作用:和总线打交道,根据EU的请求,执行CPU对存储器或I/O接口的总线操作,完成数据传送。

8086CPU内部功能结构框图

2.2.2 8086寄存器结构

(13个16位寄存器,1个16位状态标志寄存器)

允许各逻辑段在整个存储空间浮动,段与段之间可以是连续的,也可以是分开的或重叠的

8个通用寄存器

数据寄存器

数据寄存器特有的习惯用法

AX(Accumulator)

①. 在I/O指令中:

输入指令:
长格式:IN AX,PORT;短格式:IN AX,DX

输出指令:
长格式:OUT PORT,AX;短格式:OUT DX,AX

②. 在乘法类指令MUL和IMUL中:

MUL  BL    ;AL中和BL中的8位数相乘,乘积放在AX中
IMUL BX    ;AX与BX中的16位带符号数相乘,结果放在DX和AX中

③. 在除法指令中,除数为8位时,被除数固定放在AX中;除数为16位时,被除数的低位固定放在AX中(高位DX),商放在AX中;

DIV CL    ;被除数放在AX中
IDIV CX    ;被除数放在DX、AX中

AH

①. 在DOS功能调用中,将功能号置给AH

MOV AH,4CH
INT 21H    ;返回DOS

②. 在除法指令中,除数是8位时,运算得到的余数在AH中

DIV CL    ;实现(AX)/(CL),所得商在AL中,余数在AH中

AL

①. 在I/O指令中:

输入指令:
长格式:IN AL,PORT;短格式:IN AL,DX
输出指令:
长格式:OUT PORT,AL;短格式:OUT DX,AL

②. 在加法调整指令DAA和AAA中,加数的和必须放在AL中才能进行调整;

③. 在乘法指令中,如果是两个8位数相乘,一个操作数隐含在固定的AL中;

MUL  BL    ;AL中和BL中的8位数相乘,乘积放在AX中

④. 在除法指令中,除数是8位时,运算得到的商在AL中

DIV CL    ;实现(AX)/(CL),所得商在AL中,余数在AH中

⑤. DOS功能键盘输入一个字符,送入的字符放在AL中

串搜索指令、存字符串指令、取字符串指令都是默认的要处理的数据所在位置为AL(AX)。

BX(Base)

①. 进行存储器时,作为基址寄存器。

CX(Count)

①. 串操作时,存放重复前缀的循环次数

    MOV CX,100
REP MOVS AREA2,AREA1    ;重复传送直到(CX)=0为止

②. 在循环控制指令中,必须以CX作为计数器

LOOP GOON
相当于:
DEC CX
JNZ GOON

CL

①. 在移位和循环移位指令中,存放执行一次指令移动的位数n:

SAL AX,CL    ;将AX中的内容左移n位,n是CL中的内容
ROR BYTE PTR[DI],CL    ;(CL)=8,则(DI)所指内存的内容不含进位右移8位

DX(Data)

①. 在使用短格式I/O指令时,应先将端口地址赋给DX:

MOV DX,02F0H
IN  AX,DX  ;端口输入
MOV DX,02F1H
OUT DX,AX  ;端口输出

②. 在乘法指令中,若是字相乘,则结果的高位放在DX中;

MUL BX ;AX与BX中的16位带符号数相乘,结果放在DX和AX中

③. 在除法指令中,当除数是16位时,被除数的高位放在DX中(低位AX),余数放在DX中;

DIV CX    ;被除数放在DX、AX中

④. 在DOS功能中,字符串输入或输出时,字符串的首地址均存放在DS:DX中

DL

①. DOS功能中,输出字符的ASCII码要先存入DL中

MOV AH,02H
MOV DL,'X'
INT 21H

指针寄存器

SP(Stack Pointer):堆栈指针寄存器,存放栈顶的偏移地址;
BP(Base Pointer):基址指针寄存器,用于在访问内存时存放内存单元的偏移地址。

变址寄存器

SI(Source Index):源变址寄存器,存放源操作数的偏移地址;
DI(Destination Index):目标变址寄存器,存放目标操作数的偏移地址。

4个段寄存器

用于存放逻辑段的段基地址

指令指针寄存器IP

16位

其内容为下一条要执行的指令的偏移地址,引导程序顺序执行。

程序员不能直接读写!!!

状态标志寄存器F

6个状态标志位

①. 进位标志CF(Carry Flag):若CF=1,则表示结果的最高位上产生了一个进位或借位;
②. 辅助进位标志AF(Auxiliary Carry Flag):辅助位表示低4位有无进位或借位;
③. 奇偶标志PF(Parity Flag):PF=1 运算结果1的个数为偶数;PF=0 运算结果1的个数为奇数;
④. 溢出标志OF(Overflow Flag):对带符号数的算数运算是否产生了算术溢出;用$OF=Cs\bigoplus Cp=$(最高位是否有进位$\bigoplus$次高位是否有进位)来检验是否有溢出;
⑤. 零标志位ZF(Zero Flag):ZF=1 运算结果为0;ZF=0 运算结果不为0;
⑥. 符号标志位SF(Sign Flag):SF=1 负;SF=0 正。

CF可用来表示无符号位的溢出;OF用来表示有符号位的溢出。

3个控制标志位

①. 方向标志DF(Direction Flag):控制数据串操作指令的步进方向。DF=1 减址方;DF=0 增址方式;
②. 中断允许标志IF(Interrupt Enable Flag):对可屏蔽中断:IF=1 开中断;IF=0 关中断;
③. 陷阱标志TF(Trap Flag):TF=1 单步执行,以检查程序;TF=0 连续正常执行。

2.2.3 8086的存储器组织

8086CPU的内存地址空间为 1MB

8086的存储格式

实际地址和逻辑地址

逻辑地址:产生实际地址用到的两个地址(段首址:偏移地址)
实际地址:CPU和存储器进行数据交换时使用的地址

实际地址唯一,逻辑地址不唯一;一个实际地址可以对应多个逻辑地址。

堆栈

堆栈:在内存中开辟的暂时存放数值数据和地址数据的一段存储区(堆栈段),“先进后出“,16bit~64KB
8086堆栈操作:入栈PUSH和出栈POP,均为16字操作,在栈顶进行。
在堆栈中存取数据的地址由SS和SP规定:SS存放堆栈段首址,SP存放栈顶的偏移地址。

压栈是先压高字节,后压低字节。

2.2.5 8086时钟周期和总线周期

时钟周期:CPU的基本定时单位,由主频决定,是CPU的时间基准;
总线周期:CPU读或写一次存储器或I/O端口所需的时间;8086一个最基本的总线周期由4个时钟周期组成。

一个最基本的读或写周期包含4个T状态,有可能在T3和T4中间插入一个或几个等待状态Tw。

2.2.7 I/O端口组织

端口号(端口地址):为每个I/O端口分配的地址,具有唯一性

微机I/O端口有两种编址方式:
①. 统一编址(存储器映像编址的I/O)
I/O端口地址置于存储器空间中,和存储单元统一编址。
②. 独立编址
I/O和存储器使用同一地址,使用指令M/IO加以区分,地址利用率高,8086即为此种端口编址方式。

凡是设有专门输入指令IN和输出指令OUT的CPU对I/O端口都进行独立编址。

独立编址采用20条地址总线中的16条(A0-15)地址线对端口地址进行编址,端口地址不分段,所以不需要采用段寄存器。

8086端口地址仍为20位,高四位为0


文章作者: Mat Jenin
文章链接: http://matjenin.xyz
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Mat Jenin !
  目录