求助!汇编语言 段地址 偏移地址 物理地址问题!

2024-05-15

1. 求助!汇编语言 段地址 偏移地址 物理地址问题!

我们经常会有拿一个地址找房间的经验吧,比如说302,那么,我们知道这房间在三楼,是从东边算过来的第二间,这个地址其实就是两个地址组成 :3楼,2号房,注意到没,每个地址是一位数,但是通过大家熟知的规律合成了一个三位数的地址。
把这个例子带到这个问题中,你可以这样理解,段地址相当于楼层地址,偏移地址相当于房间号,最后合成的就是物理地址。
8086的地址线20根,数据线16根,物理地址的位数取决于8086地址线的数量,16位的数据线决定了8086的寄存器只能有16位,这样一来不管是段寄存器还是通用寄存器都是16位的,所以,段地址和偏移量也都是16位了。当要合成20位的物理地址时,先把段地址左移4位(就是*16的原因),变成20位的,然后再加16位的偏移地址,得到最后的20位物理地址。

求助!汇编语言 段地址 偏移地址 物理地址问题!

2. 段地址寄存器的内容是什么 什么是偏移地址

六个段寄存器(对内存的分段管理而设置的)
●
ES
附加段:指出当前程序使用附加数据段的段基址,该段是串操作指令中目的串所在的段。
●
CS
代码段:存放当前正在运行的程序代码所在段的段基值,表示当前使用的指令代码可以从该段寄存器指定的存储器段中取得,相应的偏移值则由IP提供。(代码英文Code)
●
SS
堆栈段:指出当前堆栈的底部地址,即存放堆栈段的段基值。(堆栈英文:Stack)
●
DS
数据段:指出当前程序使用的数据所存放段的最低地址,即存放数据段的段基值。(数据英文:Data)
●
FS
●
GS
偏移地址是
相对某个基址(段地址)移动**后的另外一个地址的偏移量
如
数据段DS寄存器的值=0088H
偏移地址=22H
那么偏移后的地址等于
0088H*10H+22H=0110H

3. 汇编语言中的偏移地址是什么意思?

举个例子,你要告诉别人你藏的东西埋在树林里哪个地方,会这么说:
从这儿过去,第5棵大树再向前2米。
这里,“第5棵大树”是一个粗的框架,“向前2米”则是在这个框架内以框架为基准的一个偏移量。
8086/8088
cpu
访问内存时,内存地址由两个十六位的二进制数构成,即:段地址+偏移地址。
段地址就是上面例子中的框架,偏移地址就是框架内相对框架基准的一个局部偏移量。
“段地址+偏移地址”这种地址表示方式,称为逻辑地址表示。若要转换成真实的内存物理地址,方法是:段地址x16+偏移地址。
8086/8088中之所以要用逻辑地址,是因为物理地址的长度(20位)超过了处理器的字长(16位),无法一次完整表示,不得不分成两部分。同时这样处理还带来了可以方便程序动态内存定位的好处。

汇编语言中的偏移地址是什么意思?

4. 什么是地址偏移量?有什么作用和价值?

简单来说,地址偏移量就是在当前段内的内存单元地址相对于段守单元的字节距离,在以8086CPU中,也称为有效地址EA。其作用就是提供一个逻辑地址在当前内存段内的偏移地址。这是与8086CPU所采用的内存分段技术密切相关的。
我们知道,8086CPU字长为16位,但其地址总线位数为20位,内存空间最大可以到2^20=1MB,即20位的物理地址。但因为字长16位的限制,其内部所有的寄存器也都是16位。为了解决20位物理地址的管理问题,内存管理采用了分段技术:将1M字节的内存空间分为若干个内存段,每个段最大可以使用16位的寄存器来管理(最大可达2^16=64K),就有了地址偏移量,可以用一个16位的寄存器来管理偏移地址;每段起始处的物理地址要求必须是16的倍数,这样,其高16位地址就可以存入一个16位的段寄存器来管理,称为段地址。这样,就形成了内存单元地址表示的第二种便是形式: 逻辑地址=段地址:偏移量。
一般,汇编语言编程时,使用逻辑地址,执行指令访问内存时,CPU内部的地址转换部件会自动将逻辑地址变换为物理地址,进行内存访问。
在8086汇编语言中,常用的段寄存器与地址偏移量寄存器的组合是CS:IP,DS:BX,SS:SP。附加段不常用。

5. 求助!汇编语言段地址偏移地址物理地址问题!

我们经常会有拿一个地址找房间的经验吧,比如说302,那么,我们知道这房间在三楼,是从东边算过来的第二间,这个地址其实就是两个地址组成:3楼,2号房,注意到没,每个地址是一位数,但是通过大家熟知的规律合成了一个三位数的地址。
把这个例子带到这个问题中,你可以这样理解,段地址相当于楼层地址,偏移地址相当于房间号,最后合成的就是物理地址。
8086的地址线20根,数据线16根,物理地址的位数取决于8086地址线的数量,16位的数据线决定了8086的寄存器只能有16位,这样一来不管是段寄存器还是通用寄存器都是16位的,所以,段地址和偏移量也都是16位了。当要合成20位的物理地址时,先把段地址左移4位(就是*16的原因),变成20位的,然后再加16位的偏移地址,得到最后的20位物理地址。

求助!汇编语言段地址偏移地址物理地址问题!

6. 汇编语言中转移的偏移地址是什么意思

举个例子,你要告诉别人你藏的东西埋在树林里哪个地方,会这么说:
从这儿过去,第5棵大树再向前2米。
这里,“第5棵大树”是一个粗的框架,“向前2米”则是在这个框架内以框架为基准的一个偏移量。
8086/8088
CPU
访问内存时,内存地址由两个十六位的二进制数构成,即:段地址+偏移地址。
段地址就是上面例子中的框架,偏移地址就是框架内相对框架基准的一个局部偏移量。
“段地址+偏移地址”这种地址表示方式,称为逻辑地址表示。若要转换成真实的内存物理地址,方法是:段地址x16+偏移地址。
8086/8088中之所以要用逻辑地址,是因为物理地址的长度(20位)超过了处理器的字长(16位),无法一次完整表示,不得不分成两部分。同时这样处理还带来了可以方便程序动态内存定位的好处。

7. 汇编 物理地址 偏移地址 段地址 什么意思?能否形象概述下?

一块4GB大小的内存。为了好存取里头的内容,对它进行物理编址。0,1,2,3,。。。

这样就可以存取数据,比如可以查找0地址处的内容。
这样本来就够了。
但是!
我一台电脑一共也就4GB,都给你一个程序用了,其他人怎么办?
所以,
用段机制来分割这4GB。这个4GB地址就可以看成一段段0,1,2,。。0,1,2.。。就是段地址了
这样每个段就相当于一个4GB来用,(一个段最大可以是4GB)
比如我要取出实际的物理地址3的位置,那么我就要在第一个段的3位置取出。
比如我要取出实际物理地址100的位置,这个,可能是在第三段第5的位置。
那么就要段地址为3,偏移地址为5,来找到它。
本来一块内存卡,编上物理地址后,duang,成为了一块有地址,4GB大小的内存卡。
这些都是真的,真的!段地址,偏移地址,都是假的!假的,也是模在真的上面,假的,转换后,就找到了真的。
这样是否更清晰?

要是没有,那就不好意思,耽误你时间了。

汇编 物理地址 偏移地址 段地址 什么意思?能否形象概述下?

8. 偏移地址的介绍

偏移地址也称为偏移量,由于8086/8088CPU内部的ALU只能进行16位的运算,而8086/8088有20条地址线,直接寻址能力1MB。因此,8086/8088所使用的20位物理地址,是由相应的段地址加上偏移地址组成的。

最新文章
热门文章
推荐阅读