初涉汇编<二>fenghuang - AG环亚娱乐

初涉汇编<二>fenghuang

2019-02-12 09:57:24 | 作者: 曼凡 | 标签: 寄存器,数据,地址 | 浏览: 5975

   上一篇讲了四个通用寄存器ax,bx,cx,dx,接下来介绍一下别的四个寄存器,指针寄存器和变址寄存器

   sp(仓库指针):这个寄存器与ss(后边说的寄存器中的)调配运用,用于指向当时仓库方位。

   bp(基址指针寄存器):可用作ss的一个相对基址方位。

   si(源变址寄存器):可用来寄存相对于ds段之源变址指针。

   di(意图变址寄存器):可用来寄存相对于es段之意图变址指针。

   这么说或许太难理解了:

   接下来再看四个寄存器

  ds(数据段寄存器),ss(仓库段寄存器),cs(代码段寄存器),es(附加段寄存器):

  为什么要将这8个寄存器合着说?

  我从前听龙哥说过,一个程序的运转的就是内存的不断改换,内存中的数据不断的存储,删去,赋值,更新。

所以当一个程序要运转时,就要知道这个程序运转的代码,所用的数据,以及或许要用到的仓库。核算机不是人,没有人这么聪明,直接拿来用。核算机要运用这些数据必须将这些东西存储在一些当地,当需求时分,就找到这些当地,直接去取。就如咱们要吃冰淇淋,就知道商铺方位,然后给钱给老板,就可以拿到冰淇淋。核算就是这样,它要得到这些数据,就必须要得到这些数据的存储方位(也就是咱们说的内存地址),然后,拿到该内存的数据,进行相应的操作。

下面是8086CUP给出物理地址的办法 :物理地址 = 段地址x16+偏移地址

看到这知道了ds,ss,cs,es的效果了,这四个寄存器原来是存储这段地址,这四个寄存器和ax,bx,dx,cx相同也是由16位二进制组成。用16进制表明的话就4位。例如0~1111,1111,1111,1111,变为16进制就是0~FFFF

因此段地址的最大值为FFFF。

偏移地址与段地址相同也是由16位的二进制组成,转化为16进制也是四位。

段地址:偏移地址 - 1000:12BF (物理地址)112BF

   这就是一个内存单元的物理地址,在这个内存单元中寄存着数据,核算机就依据物理地址访问到该要的数据如图:

下面咱们看看咱们咱们的debug图:


 由上面的图,很快就能知道咱们当时地点的内存单元,一起咱们也知道这一系列的字母代表着什么,假如咱们翻开的-r数据不相同的话,这是正常的,由于不同的核算机,咱们地点的内存单元不同。一起,依据以上的供给的数据,咱们就能算出物理地址,套用以上的公式.

知道以上的数据值代表的意义,我再讲讲es,bp,si,di:

首要你或许会想?

ES有什么用?核算机履行程序不是只用到三种段地址吗?还有就是bp,si,di有什么效果?

想想看?

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章