2 寄存器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fallfeather/article/details/78305161
  • 通用寄存器
    1、8086CPU有14个寄存器,分别为:AX BX CX DX SI DI SP BP IP CS SS DS ES PSW。
    2、8086CPU的所有寄存器都是16位的可以存放两个字节,AX BX CX DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。
    因为8086CPU的上一代CPU中的寄存器都是8位的,为了保证兼容,使原来基于上代CPU编写的程序稍加修改就可以运行在8086之上,8086CPU的AX BX CX DX这4个寄存器都可以分为两个可独立使用的8位寄存器来用
    AX可分为AH AL
    BX可分为BH BL
    CX可分为CH CL
    DX可分为DH DL
    AX的低8位构成了AL寄存器,高八位构成了AH寄存器
    16位寄存器分为两个8位寄存器

  • 地址相关
    3、8086CPU可同时处理字节(byte)和字(word)两种尺寸的数据(1word = 2byte)
    4、16位结构的CPU(32位和64位同样):
    运算器一次最多可以处理16位的数据;
    寄存器的最大宽度为16位;
    寄存器和运算器之间的通路为16位。
    5、CPU给出物理地址的方法:
    物理地址 = 基础地址 + 偏移地址;
    物理地址 = 段地址*电脑的CPU位数 + 偏移地址。
    (CPU并不直接给出物理地址,总会找到一个参考的基础地址)

  • 段寄存器
    6、在编程时可以根据需要,将若干地址连续的内存单元看作一个段,段起始地址为段地址x16,内存单元为偏移地址。
    两点注意:
    段地址x16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;
    偏移地址为16位,16位的寻址能力为64kb,所以一个段的最大长度为64kb。
    7、8086CPU有4个段寄存器:CS DS SS ES,当8086CPU要访问内存时有这4个段寄存器提供内存单元的段地址。

  • CS IP
    8、内存中,指令和数据没有人和区别,都是二进制信息,CPU根据什么将内存中的信息看作指令或数据?
    答:CPU将CS:IP指向的内存单元中的内容看作指令,因为,在任何时候,CPU将CS IP中的内容当作指令的段地址和偏移地址,用它们合成指令的物理地址,到内存中读取指令码,执行。如果说,内存中的一段信息曾被CPU执行过的话,那么,他所在的内存单元必然被CS:IP指向过。
    9、mov可以修改通用寄存器的数值,但是修改不了CS IP等存放地址的寄存器,我们可以用jmp实现:
    jmp 2AE3:3,执行后CS=2AE3,IP=0003,CPU将从2AE33处读取指令。
    jmp 3:0B16 , 执行后CS=0003,IP=0B16,CPU将从00B46处读取指令。

猜你喜欢

转载自blog.csdn.net/fallfeather/article/details/78305161