QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

鱼友Ⅰ

Rank: 2Rank: 2

积分
110
查看: 104|回复: 7

[已解决]代码段偏移地址的问题

[复制链接]
最佳答案
0 
累计签到:70 天
连续签到:8 天
wjp 发表于 5 天前 1047 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

这么理解

这么理解

因为在代码段的最开始所以偏移地址为0,这个怎么理解?
是不是说所有的代码段开始处偏移地址都是0开始吗,物理内存的计算方式是ds*16+ip
如果说一个物理地址是11111这样的话ip不可能等于0呀,是不是说代码段不能以这个地址开始
那么是不是说系统给每个段分配内存都是从11100或11110这样的内存处开始的吗?

最佳答案
4 天前
本帖最后由 兰陵月 于 2017-12-8 09:58 编辑

实模式下(就是王爽那本书全书学习所在环境):
1、程序中的偏移地址就是编译之后的偏移地址,偏移地址只是一个相对于段首位置的偏移量,所以当它被加载到物理内存之后,该偏移量也是不会发生变化的。
2、按MASM编译器来说,比如说一个段,它叫codeseg,那它的段的形式如下:
codeseg segment
   mov ax,0  ;本段第1行
。。。。
codeseg ends
在上面的段的结构中,mov ax,0在codeseg段中的偏移地址就0x00
如果你象书上的一样,在段内的第一行,定义数据,那最开始的那个数据的偏移地址就是0x00
3、段地址都是能够被16整除的。不能被16整除的就不能作为段地址。
4、你说的代码段的开始处是不是指运行起始处。运行起始处不一定是偏移地址0x00

楼层
跳转到指定楼层
最佳答案
10 
累计签到:284 天
连续签到:5 天
qq1242009750 发表于 5 天前 | 显示全部楼层
有可能要不我们写些代码试试吧
最佳答案
0 
累计签到:70 天
连续签到:8 天
wjp  楼主| 发表于 5 天前 From FishC Mobile | 显示全部楼层
qq1242009750 发表于 2017-12-7 23:29
有可能要不我们写些代码试试吧

所以这里不理解呀,为啥要这样做,如果段足够多是不是就没地址给它分配了。。。。。
最佳答案
0 
累计签到:70 天
连续签到:8 天
wjp  楼主| 发表于 4 天前 From FishC Mobile | 显示全部楼层
qq1242009750 发表于 2017-12-7 23:29
有可能要不我们写些代码试试吧

嗯嗯可以试试
最佳答案
32 
累计签到:361 天
连续签到:6 天
兰陵月 发表于 4 天前 | 显示全部楼层    本楼为最佳答案   
本帖最后由 兰陵月 于 2017-12-8 09:58 编辑

实模式下(就是王爽那本书全书学习所在环境):
1、程序中的偏移地址就是编译之后的偏移地址,偏移地址只是一个相对于段首位置的偏移量,所以当它被加载到物理内存之后,该偏移量也是不会发生变化的。
2、按MASM编译器来说,比如说一个段,它叫codeseg,那它的段的形式如下:
codeseg segment
   mov ax,0  ;本段第1行
。。。。
codeseg ends
在上面的段的结构中,mov ax,0在codeseg段中的偏移地址就0x00
如果你象书上的一样,在段内的第一行,定义数据,那最开始的那个数据的偏移地址就是0x00
3、段地址都是能够被16整除的。不能被16整除的就不能作为段地址。
4、你说的代码段的开始处是不是指运行起始处。运行起始处不一定是偏移地址0x00

最佳答案
0 
累计签到:70 天
连续签到:8 天
wjp  楼主| 发表于 4 天前 From FishC Mobile | 显示全部楼层
兰陵月 发表于 2017-12-8 09:54
实模式下(就是王爽那本书全书学习所在环境):
1、程序中的偏移地址就是编译之后的偏移地址,偏移地址只 ...

我知道偏移地址是段首位置的偏移量,我想知道的是段首位置在内存中实际的地址是怎么样的,书上说实际的物理地址=段地址*16+偏移地址得到那书上说段首位置的偏移量是0,那不是说实际的物理内存=段地址*16+0那是不是说每个段首位置的实际物理地址都能被16整除?反过来说不能被16整除的都不能当分配给段首地址
最佳答案
32 
累计签到:361 天
连续签到:6 天
兰陵月 发表于 4 天前 | 显示全部楼层
wjp 发表于 2017-12-8 13:59
我知道偏移地址是段首位置的偏移量,我想知道的是段首位置在内存中实际的地址是怎么样的,书上说实际的物 ...

是的,16位实模式下就是这样的,段地址必须能被16整除,否则不能做段地址。
最佳答案
0 
累计签到:70 天
连续签到:8 天
wjp  楼主| 发表于 3 天前 From FishC Mobile | 显示全部楼层
兰陵月 发表于 2017-12-8 18:06
是的,16位实模式下就是这样的,段地址必须能被16整除,否则不能做段地址。

哦哦,懂了,谢谢了

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /2 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-12-12 12:23

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