zoukankan      html  css  js  c++  java
  • 8086cpu

    1、  8086CPU和8088CPU内部结构基本相同,不同之处在于8088有8条外部数据总线,因此为准16位。8086有16条外部数据总线。两个CPU的软件完全兼容,程序的编制也完全相同。

    2、  8086CPU从功能上分为两大部分:一是执行部件(EU),二是总线接口部件(BIU)。

    执行部件是由以下虽部分组成:

    (1)四个通用寄存器:AX BX CX DX

    (2)四个专用寄存器:基数指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI

    (3)标志寄存器FR=flag

    (4)算术逻辑部件ALU

    功能是负责执行所有的指令,向总线接口部件提供指令执行的结果数据和地址,并对通用寄存器和标志寄存器进行管理。

    总线接口部件由以下部件组成:

    (1)四个段寄存器:代码段寄存器,数据段寄存器,附加段寄存器,堆栈段寄存器。

    (2)指令指针寄存器

    (3)地址加法器

    (4)指令队列

    功能:执行外部总线周期,负责存储器与外部端口I|O传送数据。也就是负责CPU与存储器和外设之间的信息交换。

    3、共有14个寄存器,分成3个部分:

    (!)通用寄存器8个 :AX,  BX , CX,  DX , SP , BP  ,SI  ,DI.

    AX , BX ,CX , DX数据寄存器,用来保存运算中的中间结果和有效地址。4个寄存器既可以做16位寄存器,也可以做8位寄存器  AL, AH, BL, BH, CL, CH, DL, DH.。

    在程序设计中,一般把AX用作累加器。BX 用作基址寄存器,CX用作计数器,DX用作数据寄存器。

    SP:堆栈指针寄存器;装栈顶指针偏移量。

    BP:基址指针寄存器:装栈段中一个数据区的基址偏移量。

    SI:源变址寄存器;装源操作数地址的偏移量。

    DI:目的变址寄存器;装目的操作数地址偏移量。

    (2)段寄存器4个

    CS;代码段寄存器;装代码段的起始地址;

    DS;数据段寄存器;装数据段的起始地址;

    SS; 堆栈段寄存器;装堆栈段的起始地址;

    ES: 附加段寄存器;装附加段的起始地址。

    (3)控制寄存器两个:IP,FR。

    IP:指令指针寄存器;始终存放当前指令的下一第指令的起始存储单元的偏移地址。

    FR:状态标志寄存器;用来存放运算结果和特征。16位寄存器,用39位。

    标志位分为两大类:一类是状态标志,用来表示算术、逻辑运算的结果特征。(CF,PF,AF,ZF,SF,OF)一类是控制标志;用来表示控制CPU的操作特征。(IF、DF、TF)

    CF(FR0):CF=1为加、减运算结果的最高位有进位或有借位,否则CF=0。

    PF(FR2):PF=1为操作结果“1”的个数为偶数,否则PF=0。

    AF(FR4):AF=1为运算结果的低4位向高4位有进位或有借位,(用于10进制BCD码运算指令)否则A=0。

    ZF(FR6):ZF=1运算结果为0,否则ZF=0。

    SF(FR7):SF=1运算结果最高为0(E),否则SF=0。

    OF(FR11):OF=1在算术运算时,带符号数的运算结果超出数的表示范围。否则OF=0。

    TF(FR8):TF=1CPU进入单步工作方式。

    IF(FR9):IF=1允许CPU响应可屏蔽外部中断请求。IF=0禁止中断。

    DF(FR10):DF=1在字符串操作时使地址指针自动减量。DF=0自动增量。

    4、 8086系统的物理地址是将段地址寄存器的内容左移4位(或乘16)加上偏移地址,即可得到20位的物理地址

       2000H左移4位为20000H,加上2100H为22100H,则物理地址为22100H。

    5、8086/8088CPU把BIU完成一次访问存储器或外设操作所需的时间称为一个总线周期。一个总线周期最少包含4个时钟周期(T1~T4)。当访问存储器(读、写)或外设时,存储器或外设不能及时地配合CPU传送数据,存储器或外设通过“READY:信号在T3之前向CPU发一个“数据未准备好”信号,CPU在T3之后插入一个或多个等待时钟周期TW。当存储器外设准备好数据,通过“READY”发“准备好”信号,CPU接收到这个信号后,会自动脱离TW状态进入T4状态。因此插入多少个TW取决于“READY”信号。

    1、  最小模式:就是在系统中只有8086/8088一个微处理器。在该系统中,所有的总线控制信号都直接由8086/8088产生,因此,系统中总线控制电路被减到最少。

    最大模式:在系统中包含两个或多个微处理器,其中一个主处理器就是不是8088/8086,其它处理器为协处理器,是协助主处理器工作的。它用在中等规模或大型的8088/8086系统中。一般情况下和8088/8086配合的协处理器有两个,一个是数值运算协处理器8087,一个是输入/输出协处理器8089。将8088/8086CPU的第33脚接地时,系统处于最大模式,当第33脚接+5V时,系统为最小模式。

    2、  地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上的地址代码暂存起来。8088/8086的数据和地址总线采用分时复用不着操作方式,即用同一总线既传送地址又传送数据。当微处理器与存储器交换信号时,首先由CPU发送存储器的地址,同时发允许锁存信号ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在锁存器中,随后才能传送数据。

    3、  8086中的典型时序包括:

    (1)存储器读与写周期。

    (2)I/O设备的读与写周期。

    (3)中断响应周期。

    (4)系统复位。

    (5)空转周期。

    (6)CPU进入和退出保持状态的时序。

      8086CPU的字节寻址范围有多大?为什么?存储器为什么分段?20位物理地址的形成过程是怎样的?�

    答:8086CPU寻址范围1MB因为8086CPU地址线为20条,2^20=1024KB,即1MB。8086系统中,指令仅给出16位地址,与寻址有关的寄存器也只有16位长,因此寻址范围只有64KB,为了寻址1MB,所以分成四个逻辑段当CPU访问内存时,段寄存器的内容(段基址)自动左移4位(二进制),与段内16位地址偏移量相加,形成20位的物理地址。

     

    采用分段结构的存储器中,任何一个逻辑地址都由段基址和偏移地址两部分构成,都是 16位二进制数。
           物理地址:存储器的绝对地址,从00000H~FFFFFH,是CPU访问存储器的实际寻址地址(也称为绝对地址)
          16位的段基址左移4位(相当于在段基址最低位后添4个“0”),然后与偏移地址相加获得物理地址,这相当于完成如下的地址运算:
             物理地址=段基址×16+偏移地址
     
    采用分段结构的存储器中,任何一个逻辑地址都由段基址和偏移地址两部分构成,都是 16位二进制数。
           物理地址:存储器的绝对地址,从00000H~FFFFFH,是CPU访问存储器的实际寻址地址(也称为绝对地址)
          16位的段基址左移4位(相当于在段基址最低位后添4个“0”),然后与偏移地址相加获得物理地址,这相当于完成如下的地址运算:
             物理地址=段基址×16+偏移地址
  • 相关阅读:
    Python打包方法——Pyinstaller
    在线检测显示器屏幕尺寸
    python_分布式进程中遇到的问题
    软件测试面试题(一)
    Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'
    mac系统 安装 IPython
    京东自动抢茅台脚本 Python
    CMake使用总结(一)
    小白安装eclipse插件—>testNG
    离线安装eclipse-testNG插件
  • 原文地址:https://www.cnblogs.com/Zblogs/p/3286050.html
Copyright © 2011-2022 走看看