鱼C论坛

 找回密码
 立即注册
查看: 2200|回复: 7

关于代码段的长度

[复制链接]
发表于 2013-5-19 02:59:00 | 显示全部楼层 |阅读模式
1鱼币
1.png
鱼哥您好,上面这段话这段话我的理解是,一个代码段的长度不能超过16个二进制位,对不?如果是这样的话,那么下面这段话 2.png
它说123B0H~123B9H是一个代码段,那么这个代码段的长度是10个字节即80个二进制位,这样不是超过了代码段允许的长度范围了么?


刚刚开始学汇编,对计算机内部工作机制了解很浅,问题要是很弱智的话多多见谅啊~

最佳答案

查看完整内容

我怕我说的不够明白细致,我这里再补充一下。直接拿你给的图上的例子说把。 0x123b0到0x123b9 这个123b0是一个地址。这个地址由段地址和偏移地址组成。段地址*16 + 偏移地址就是一个物理地址。 这里的123b0可以看成 段地址123b,偏移地址0,表示为123b:0 由于8086的寄存器是16位的,也就是说偏移地址最多只能是123b:ffff (FFFF 就是16个2进制位全部是1 也就是2进制的1111111111111111); 0~FFFF 总共这么多个地址,一 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-19 02:59:01 | 显示全部楼层
我怕我说的不够明白细致,我这里再补充一下。直接拿你给的图上的例子说把。
0x123b0到0x123b9
这个123b0是一个地址。这个地址由段地址和偏移地址组成。段地址*16 + 偏移地址就是一个物理地址。
这里的123b0可以看成 段地址123b,偏移地址0,表示为123b:0

由于8086的寄存器是16位的,也就是说偏移地址最多只能是123b:ffff
(FFFF 就是16个2进制位全部是1 也就是2进制的1111111111111111);
0~FFFF 总共这么多个地址,一个地址占1一个字节。也就是换算出来偏移地址最多为64KB大小的空间。


10B跟64KB比起来 小太多了。

评分

参与人数 1鱼币 +6 收起 理由
s0512 + 6 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-19 03:08:53 | 显示全部楼层
楼主,那段视频里面说的 一个代码段的长度不能超过16个二进制位,这个是没有错。16个2进制位总共可以形成2的16次方个地址,一个地址占一个字节,也就是64kB,也就是说,一个段空间占64KB。
10B显然是小于64kb的。如果哪里还有不明白的,可以继续问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-19 10:33:52 | 显示全部楼层

多谢您的回答!基本明白了,还有一个地方不清楚:为什么一个地址占一个字节呢?一个字节不是应该等于8位二进制位吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-19 13:46:19 | 显示全部楼层
CarpeDiem 发表于 2013-5-19 10:33
多谢您的回答!基本明白了,还有一个地方不清楚:为什么一个地址占一个字节呢?一个字节不是应该等于8位二 ...

我大概明白你的疑惑在哪里了,这么跟你说把

cpu识别内存就是靠地址来识别,一个地址就就是一个ID,代表一个单元的内存。比如说,你的计算机所有的内存是4G(这个4G包括所有的内存,主板中的,显卡中的,内存条,寄存器等等),因为内存的基本单元就是1个字节。所以总共就有2的32次方个地址。一个地址指向一个单元的空间。


1个字节是等于8bit,一个寄存器只有16位,2个字节空间,这个2个字节的空间是用来存放偏移地址而不是用来存放代码的,代码存在在 这个16位所表示的值所在的位置。比如:
0x123b:0~ 0x123b:9
代码就放在123b:0~ 0x123b:9这10个字节的的内存单元中,然而0x123b:0这个地址是存放在cs和ip这两个16寄存器中的。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-19 19:28:59 | 显示全部楼层
无回帖,不论坛,这才是人道。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-24 00:37:18 | 显示全部楼层
犀利{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-24 06:47:03 | 显示全部楼层
说到这个问题 ,忽然想到 32位XP的内存寻址 有2的32方 =4096M 算是4GB把。可我的电脑插的4GB 就认3GB   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 18:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表