美文网首页
(一) 寄存器

(一) 寄存器

作者: SwiftAlan | 来源:发表于2017-07-08 11:35 被阅读0次

     一个典型的 CPU 由运算器、控制器、寄存器等器件组成,不同 CPU 寄存器的个数和结构都是不相同的,8086 CPU14 个寄存器,这些寄存器分别是:AX BX CX DX SI DI SP BP IP CS SS DS ES PSW

    1、通用寄存器

    8086 CPU 所有寄存器都是 16 位的,可以存放两个字节。AX BX CX DX 这四个寄存器通常用来存放一般性数据,称为通用寄存器。
    8086 CPU 的上一代 CPU 中的寄存器是 8 位的,为保证兼容,使原来基于上一代 CPU 编写的程序稍加修改就可以运行在 8086 上,8086 CPUAX BX CX DX 这四个寄存器都可分为两个独立使用的 8 位寄存器来用:

    AX

    可分为

    AH

    AL

    BX

    可分为

    BH

    BL

    CX

    可分为

    CH

    CL

    DX

    可分为

    DH

    DL

    2、8086 CPU 物理地址

    8086 CPU 有20位地址总线,可以传送20位地址,达到 1 M 寻址能力,8086 CPU 又是 16 位结构,在内部一次性处理、传输、暂时存储的地址为 16 位。所以 8086 CPU 采用一种在内部用两个 16 位地址合成的方法来形成一个 20 位的物理地址

    1. CPU 的相关部件提供两个 16 位的地址,一个称为段地址,另一个称为偏移地址;
    2. 段地址和偏移地址被送入到一个称为地址加法器的部件合成一个 20 位的物理地址;
    3. 地址加法器通过内部总线将 20 位物理地址送入输入输出控制电路;
    4. 然后通过地址总线传送到存储器;
    

    物理加法器采用 物理地址 = 段地址 * 16 + 偏移地址 的方法用段地址和偏移地址合成物理地址。
    例:段地址 = 1230,偏移地址 = A5
    123A5 = 1230 * 16 + A5 所以计算得出物理地址为 123A5

    3、段寄存器

    8086 CPU 有四个段寄存器:CS DS SS ES

    CS :代码段
    DS :数据段
    SS :堆栈段
    ES :拓展段
    

    CSIP8086 CPU 中两个最关键的寄存器,他们指示了 CPU 当前要读取指令的地址,CS 为代码段寄存器,IP 为指令指针寄存器。在 8086 PC 机中,任意时刻,CPUCS:IP 指向的内容当做指令执行。
    8086 CPU 工作过程简单简述如下

    1. 从 CS:IP 指向的内存单元读取指令,读取的指令进入指令缓冲器;
    2. IP = IP + 所读指令长度,从而指向下一条指令;
    3. 执行指令,转到步骤 1 ,一直重复直到退出为止。
    

    8086 CPU 加电启动或复位后 CSIP 被设置为 CS = FFFFHIP = 0000H,即 8086 PC 机启动时执行的第一条指令是 FFFF0。如果内存中的一段信息曾被 CPU 执行过,那么它所在的内存单元必定被 CS:IP 指向过。
    CPU 从何处执行指令是由 CS:IP 决定的,所以我们可以通过修改 CS:IP 中的内容来控制 CPU 目标指令。
    传送指令 MOV 大部分寄存器的值,但是不能用于设置 CS:IP 的值,因为8086 CPU 没有提供这样的功能,能够改变 CS:IP 的指令被统称为转移指令,如 JMP 指令。

    例:
    同时修改 CS 和 IP 的值,指令格式:JMP 短地址:偏移地址
    jmp 2B5A:6,执行后 CS = 2B5AH,IP = 0006H,CPU 将从 2B5A6H 处读取指令。
    只修改 IP 的值 指令格式:jmp 某一合法寄存器
    JMP AX,执行前:AX = 1000H,CS = 2000H,IP = 0002H
    执行后:AX = 1000H,CS = 2000H,IP = 1000H
    

    相关文章

      网友评论

          本文标题:(一) 寄存器

          本文链接:https://www.haomeiwen.com/subject/nhurhxtx.html