首页 > 其他 > 详细

第二章 寄存器

时间:2018-10-15 23:53:50      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:部件   能够   通路   又是   首地址   工作   访问   指针   程序员   

  • 一.通用寄存器

  • 通用寄存器通常用来存放一般性的数据。

  • 二.字在寄存器中的存储

    出于对兼容性的考虑,8086CPU可以一次性处理两种尺寸的数据:

  • 1.字节:记为byte,一个字节由8个比特(即二进制位)组成,可以存在8位寄存器中。
  • 2.字:记为word,一个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节。
  •  

    三.物理地址

    CPU通过地址总线送入存储器的必须是一个内存单元的物理地址。 在CPU向地址总线上发出物理地址之前,必须在内部先形成这个物理地址。 不同的CPU可以有不同的形成物理地址的方式。

    16位结构的CPU

    • 16位结构的CPU具有下面几方面的结构特性:

    • 运算器一次最多可以处理16位的数据
    • 寄存器最大宽度为16位
    • 寄存器和运算器之间的通路为16位
  •  

    内存单元的地址在送上地址总线之前,必须在CPU中处理、传输、暂时存放,对于16位CPU,能一次性处理、传输、暂时存储16位的地址。

     8086CPU给出物理地址的方法

    8086CPU有20位地址线,可以传送20位地址,达到1MB的寻址能力。
    8086CPU又是16位结构,在内部一次性处理、传输、暂时存储的地址为16位。
    从8086CPU的内部结构来看,如果将地址从内部简单地发出,那么它只能送出16位的地址,表现出的寻址能力只有64KB。
    事实上,8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。

  • 8086CPU相关部件的逻辑结构如图所示:  当8086CPU要读写内存时:
    (1).CPU中的相关部件提供两个16位地址,一个称为段地址,一个称为偏移地址
    (2).段地址和偏移地址通过内部总线送入一个称为地址加法器的部件
    (3).地址加法器将两个16位地址合并成哟个20位物理地址
    (4).地址加法器通过内部总线将20位物理地址送入输入输出控制电路
    (5).输入输出控制电路将20位物理地址送上地址总线
    (6).20位物理地址被地址总线传送到存储器
    地址加法器采用物理地址=段地址X16+偏移地址的方法用段地址和偏移地址合成物理地址

    四.段的概念

    "段地址"中的“段”的概念,其实来自于CPU。内存并没有分段,段的划分来自于CPU。

    五.段段寄存器

    段地址在8086CPU的段寄存器中存放。
    8086有4个段寄存器:CS,DS,SS,ES。

    六.CS和IP

    当8086CPUCPU要访问内存时由这4个段寄存器提供内存单元的段地址。

  • CS和IP是8086CPU中两个最关键的寄存器,他们指示了CPU当前要读取指令的地址。

    • CS为代码段寄存器
    • IP为指令指针寄存器
  •  

    在8086PC中,任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M×16+N单元开始,读取一条指令并执行。
    也可以描述为:8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。

  • 如图显示了8086CPU读取、执行指令的工作原理:

    • 8086CPU当前状态:CS中的内容为2000H,IP中的内容为1000H
    • 内存20000H~20009H单元中存放着可执行的机器码
  •  

    七.修改CS、IP的指令

    在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器的内容实现对CPU的控制。 CPU从何处执行指令是由CS、IP中的内容决定的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。
    8086CPU大部分寄存器的值,都可以通过mov指令来改变。mov指令被称为传送指令。
    mov指令不能用于设置CS、IP的值,原因是:8086没有提供这样的功能。
    能够改变CS、IP的内容的指令被统称为转移指令。

    八.代码段

    对于8086PC机,在编程时,可以根据需要,将一组内存单元定义为一段。可以将长度为N(N<=64KB5)的一组代码,存在一组地址连续、起始地址为16的倍数的内存单元中。存在这段内存单元中的代码可以成为一个代码段。

    将一段内存当作代码段,仅仅是我们在编程时的一种安排,CPU并不会由于这种安排,就自动的将我们定义的代码段中的指令当作指令来执行。
    CPU只认被CS:IP指向的内存单元中的内容为指令。
    要让CPU执行我们放在代码段中的指令,必须要将CS:iP指向所定义的代码段中的第一条指令的首地址。

  • 九.总结
  • 段地址在8086CPU的段寄存器中存放。当8086CPU要访问内存时,由段寄存器提供内存单元的段地址。8086CPU有4个段寄存器,其中CS用来存放指令的段地址。
  • CS存放指令的段地址,IP存放指令的偏移地址。
  • 8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行
  • 8086CPU的工作过程:
    (1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器
    (2)IP指向下一条指令
    (3)执行指令
    (4)转到步骤(1),重复这个过程
  • 8086CPU提供转移指令修改CS、IP的内容。

第二章 寄存器

标签:部件   能够   通路   又是   首地址   工作   访问   指针   程序员   

原文:https://www.cnblogs.com/mr-gao1/p/9795327.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号