美文网首页
2.汇编之寄存器与8086寻址方式及内存的分段管理

2.汇编之寄存器与8086寻址方式及内存的分段管理

作者: 木子心语 | 来源:发表于2018-04-06 11:47 被阅读0次

1.典型的CPU

1.1.一个典型的CPU是由哪几部分构成?
  • 运算器:信息处理。
  • 控制器:控制其他器件进行工作。
  • 寄存器: 信息存储。
1.2.不同寄存器与CPU的关系?
  • CPU中的主要部件是寄存器。
  • 寄存器是CPU中程序员可以用指令读写的部件。
  • 不同的CPU,寄存器的个数,结构是不相同的。
1.3. 8086有多少个寄存器?
8686CPU寄存器.png
  • 有14个寄存器
  • 都是16位的寄存器
  • 可以存放两个字节

2.寄存器

2.1.通用寄存器

上图中,AX,BX,CX,DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。

2.2寄存的用途

CPU会先将内存中的数据存储到通用寄存器中,然后再对通用寄存器中的数据进行运算。

2.3案例
案例.png

假设内存中有块空间之为1,现在它的值加1,并将结果存储到紫色的块中?
我们应该怎么做呢?

  • CPU首先将空间值为1放到AX寄存器中
    mov ax,1
  • 然后让ax寄存器与1相加
    add ax,1
  • 最后将至赋值给内存空间
    mov 紫色块内部才能空间,ax
2.4寄存器结构
寄存器结构.png

AX,BX,CX,DX这4个通用寄存器都是16位的。
上一代8086的寄存器都是8位的,为了保证兼容,AX,BX,CX,DX,这4个寄存器都可以分为两个可独立使用的8位寄存器来用。

  • AX可分为AH和AL
  • BX可分为BH和BL
  • CX可分为CH 和CL
  • DX可分为DH和DL
    这里H代表高位寄存器,L代表低位寄存器。
2.5寄存器存储情况
寄存器存储情况.png
  • AX 中AH-->>高8位,AL-->>低8位
  • AX中二进制数据100111000100000,16进制4E20H
  • AH中二进制01001110,因为AX二进制位15位,所以要前补零,达到8位
  • AL中二进制00100000,低八位存储。
2.6.字节与字在寄存器中的存储

8086CPU可以一次性处理以下两种尺寸的数据。

  • 字节:byte,一个字节由8个bit组成,可以存储8位寄存器中
  • 字: word,1个字由2个字节组成,这2个字节分别称为字的高字节和低字节。
2.7.通用寄存器
  • ARM64拥有31个64位的通用寄存器x0到x30
  • 这些寄存器通常用来存放一般性的数据,称为通用寄存器
2.8 pc寄存器
  • 指令指针寄存器,CPU当前要读取指令的地址
  • 在内存或者磁盘上,指令和数据没有任何区别,都是二进制信息

3. 8086寻址方式

3.1物理地址

CPU访问内存单元时,要给出内存单元的地址,所有的内存单元都有唯一的地址,叫做物理地址。

3.2 8086给出物理地址的方法
  • 8086有20位地址总线,可以传送20位地址,达到1MB寻址能力。
  • 它是16位结构的CPU,他内部能够一次性处理,传输,暂时存储的地址为16位。
  • 如果将地址从内部简单的发出,那么它只能送出16位的地址,表现出来的寻址能力只有64KB。
  • 8086 采用了一种在内部用两个16位地址合成一个20位的物理地址。
3.3 8086逻辑结构
8086逻辑结构.png

如图,

  • CPU中的相关部件提供两个16位的地址,一个称为段地址,一个称为偏移地址。
  • 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件。
  • 地址加法器将两个16位地址合成为一个20位的物理地址。
  • 地址加法器通过内部总线将20位物理地址送入输入输出控制电路。
  • 输入输出控制电路将20位物理地址送上地址总线
  • 20位物理地址被地址总线传送到存储器。

地址加法器采用 物理地址=段地址 * 16 + 偏移地址 的方法用段地址和偏移地址合成物理地址。

3.4 案例

案例一:
三个村庄在一条直线上,A,B,C
A------------1000米-----------------B----------500米---------C
如果我想去C村庄的话,有两种方式:

  • 1.从A到C走1500米就是C村庄,这里可以认为是C村庄的物理地址
  • 2.从A到B走1000米,相对于A的基地址,再从B走500米到C,相当于基地址的偏移地址。

第一种方式直接给出物理地址,第二种方式是用基础地址和偏移地址相加得到物理地址。

案例二:
我们用纸传递信息,比如我们必须有一张可以容纳4位数据的纸条,才能写下2826这个数据。
如果我们没有一张可以容纳4位数据的纸条,我们这里只有2张可以容纳3位数据的纸条,表现形式:
2--0--0
8--2--6
第一张纸上写200(段地址),在第二张纸上写上826(偏移地址),我们需要做如下运算:
200(段地址) * 10 + 826(偏移地址) = 2826(物理地址)

8086就是这样一个只能提供两张3位数据纸条的CPU。

4.内存的分段管理

  • 8086是用 基础地址(段地址 * 16 ) + 偏移地址 = 物理地址 的方式给出物理地址
内存分段管理.png
  • 为了开发方便,我们可以采取分段的方法来管理内存,比如:地址10000H~100FFH的内存单元组成一个段,该段的起始地址(基础地址 )为10000H,段地址为1000H,大小为100H。
内存单元分2段.png
  • 地址10000H ~ 1007FH,10080H ~100FFH组成两段,它们的起始地址(基础地址)为10000H 和10080H,段地址为1000H和1008H,大小都是80H。

一段内存 10080H ~ 100FFH
段地址:1008H
其实地址(基础地址):10080H
1008:0020 -->> 10080 +0020 = 100A0(物理地址)

注意:段地址 * 16 必然是16的倍数,所以一个段的起始地址也一定是16的倍数;偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB。

5.总结

以上是对寄存器与8086寻址方式及内存的分段管理介绍,
我们下一章继续对汇编内容讲解。
跟随我,继续学习。

相关文章

  • 2.汇编之寄存器与8086寻址方式及内存的分段管理

    1.典型的CPU 1.1.一个典型的CPU是由哪几部分构成? 运算器:信息处理。 控制器:控制其他器件进行工作。 ...

  • 8086 指令系统寻址方式

    整理汇编语言学习笔记,回顾一下8086 指令系统的寻址方式。 寻址与指令 寻址方式(Addressing Mode...

  • 十七.AT&T汇编

    之前将的都是8086汇编,现在聊一聊AT&T汇编,基本都是相同的汇编就是使用寄存器存储数据和操作内存; ios基本...

  • 寄存器&指令

    汇编原理 地址总线:它的宽度决定了cpu的寻址能力,如1G内存寻址能力是1024x1024x1024; 8086地...

  • 汇编——8086寻址

    8086的寻址方式 CPU访问内存单元时,要给出内存单元的地址,所有的内存单元都有唯一的地址,叫做物理地址 808...

  • 8086寻址方式

    8086寻址方式 16位的8086cpu中运算器一次最多可以处理16位的数据,寄存器的最大宽度为16位,寄存器和运...

  • 玩转寄存器 by debug

    debug调试工具是调试汇编程序(8086方式)的常用工具,使用debug可以查看CPU各种寄存器以及内存内容。目...

  • 汇编语言_03

    8086寻址方式 CPU访问内存单元时,要给出内存单元的地址,所有的内存单元都有唯一的地址,叫做物理地址 8086...

  • 寻址方式与用于寻址的寄存器小结(8086)

    姓名:朱嘉仪 学号:16020199053 转载自https://zhuanlan.zhihu.com/p/227...

  • 8. 汇编-ESP寻址 EBP寻址

    8. 汇编-ESP寻址 EBP寻址 寄存器传参和堆栈传参 寄存器传参 堆栈传参 --ESP寻址 堆栈传参 --EBP寻址

网友评论

      本文标题:2.汇编之寄存器与8086寻址方式及内存的分段管理

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