1.8086与8088的区别

对内: 二者都是16位数据总线,20根地址总线,
对外: 8086CPU外部总线宽度为16位,8088外部总线宽度为8位
8086cpu

2.8086CPU结构

从功能上8086分为两部分,总线接口单元(BIU:bus interface unit) 和 指令执行单元(EU:execution unit),如图所示。

8086cpu内部结构

由8086CPU的内部结构框图可知CPU内部设置了许多寄存器,它可以用来存放运算过程中所需要的操作数、操作数的地址、中间结果及最后的运算结果,它的存取速度比存储器快许多。
8086与8088的内部寄存器完全一样。
8086CPU内部寄存器

2.1 数据寄存器

4个16位数据寄存器(可存数据或地址),也可以分成8个8位寄存器(此时只能用来存放8位数据,而不能存地址)使用.

  • AX (accumulator 累加器) 是使用最频繁的寄存器,AX(AH和AL)在乘除法中也有专门的用途.
  • BX (base 基址寄存器或基地址指针) 可用来存放偏移地址.
  • CX (count 计数寄存器) 在循环时做计数器使用,用于控制循环程序的执行次数.
  • DX (data 数据寄存器) 在乘除法和I/O操作时有专门的用途.

2.2 地址指针和变址寄存器

地址指针和变址寄存器加上BX基址寄存器,可以与段寄存器配合使用,一起构成内存的物理地址.

  • SP (stack pointer 堆栈指针)
  • BP (base pointer 基址指针)

SP与BP可以与SS(stack segment 堆栈段寄存器)联合使用,用于设置或访问堆栈段.

  • SI (source index 源变址寄存器) 源地址
  • DI (destination index 目的变址寄存器) 目标地址

SI和DI具有通用寄存器的功能,通过SI,DI以及基址寄存器BX,可以在内存中灵活寻找存储器操作数.

2.3 段寄存器

  • CS 代码段寄存器
  • DS 数据段寄存器
  • SS 堆栈段寄存器
  • ES 附加段寄存器
    用来存放各段起始地址的高16位值,称为段基地址或段基址.段基地址与段内偏移地址offset 组合起来就可以形成20位物理地址.

2.4 指令指针

  • IP(instruction pointer 指令指针)
    用来存放将要执行的下一条指令在现在代码段中的偏移地址,与CS一起形成将要取出指令的物理地址.也就是说下一条指令的地址由CS:IP决定.

2.5 标志寄存器共16位

a.  状态标识6个
    a)  符号标志 SF
    b)  零标志 ZF
    c)  奇偶标志 PF
    d)  进位标志 CF (carry flag) 最高位有进位或借位则CF=1
    e)  辅助进位标志 AF
    f)  溢出标志 OF
b.  控制标志3个
    a)  方向标志 DF
    b)  中断允许标志 IF
    c)  跟踪标志 TF
有符号有意义:ZF  SF  PF  OF
无符号有意义:PF  ZF  CF  AF