微处理器8088/8086结构

谈8088内部结构之前,先来看一下微处理器的基本结构

微处理器一般由算数逻辑单元(ALU),寄存器,指令处理单元等几部分组成

  1. 算数逻辑单元:负责cpu的各种运算,一般是算数运算和逻辑运算。
  2. 寄存器:处理器内部需要高速的存储单元,用于暂时存储程序执行过程中的代码和数据,这些存储单元称为寄存器。
  3. 指令处理单元:负责对指令进行译码和处理。

8088/8086的结构

1. 功能结构

  • 总线接口单元(BIU):管理着8088和系统总线的接口,负责cpu的存储器和外设进行访问。8088cpu对外的所有操作都必须通过总线还有BIU来进行,其他总线请求设备也可以申请占用总线。总线使用情况有取指,取指以外的的其他操作,总线空闲,其他设备占用总线。

  • 执行单元(EU):负责指令的译码与执行以及数据的运算。译码后执行的操作分为内操作(所有8位,16位的算术逻辑运算都由EU来完成)和外操作(读写存储器和对外设的操作)。

  • 指令预取:BIU维护着长度为4字节的指令队列,按照FIFO的方式进行工作。当队列空缺时BIU会自动取指弥补空缺。当程序发生转移时,BIU会废除原队列,通过重新取指来形成新的队列。

2.寄存器结构

  • 按照功能分类有通用寄存器,段寄存器,标志寄存器,指令指针。其中通用寄存器包括数据寄存器,变址寄存器,指针寄存器。
  • 按照应用来分类
    存放数据和结构:通用寄存器,包括数据寄存器(AX,BX,CX,DX),变址寄存器(SI,DI),指针寄存器(BP,SP)
    存放段地址:段寄存器(CS,SS,DS,ES)
    存放偏移地址:包括BX,SI,DI,BP,SP,IP(其中SI,DI默认与DS联用,BP与SP默认与SS联用,IP与CS联用寻找指令的地址)
  • 透明寄存器:CS,IP,FLAGS。(不可修改)
    3.存储器结构
  • 数据的存储格式:字节(8位),单字(16位),双字(32位)。将子单元安排在偶地址(xxx0b),将双字单元安排在模4地址(xx00b)称为地址对齐
  • 存储器的分段管理
    8088内部总线的为16位,编号:0000H~FFFFH,容量为 2^16 = 64k。但是8088CPU地址线是20位的,所以物理寻址范围为:00000H~FFFFFH,寻址空间为 2^20 = 1MB。8088将存储空间分为许多的逻辑段进行管理,且最大的段限制为16k,而且只能从模16开始的一个逻辑段,每个存储器可用 段地址:偏移地址 表示准确位置。
    物理地址:段地址0H,例如DS0H,这也解释了为什么要 * 16,而且为什么CPU内16位的逻辑地址可以表示20位的物理地址
    寻址方式: 段地址 * 16 + 偏移地址
  • 段寄存器
    段超越:改变默认的段地址 mov AX,DS:[BP] ; [DS*16+BP] -> AX

FLAGS中的OF与CF说明:
相同点:都是表示最高位的进位。
不同点:CF表示无符号数运算结果是否超出范围,结果正确。
    OF表示有符号数运算结果是否超出范围,结果错误。
实际都是表示进位,但是用OF来标记有符号数运算是否溢出,用CF表示无符号数运算是否有进位,具体为有符号数还是无符号数运算还得从程序员使用哪个标记来判断。

[ ]符号说明: []表示物理地址的数据。表示的内存数据大小不确定,看具体mov的数据大小来决定,但也可以通过类型说明符来限制mov的类型。
mov [2000H],23 ;错误,内存大小不确定
mov BYTE PTR [2000H],23; 表示23位字节类型

多字节数存储说明: 用一段连续的地址存储,用小端方式存储:低对低,高对高。低位地址指向多字节的数据段。

你可能感兴趣的:(微处理器8088/8086结构)