鱼C论坛

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

书中2.12小节的一些疑问

[复制链接]
发表于 2014-2-3 12:48:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
书中,2.12 小节 代码段  
中说:"在编程时,可以根据需要,将一组内存单元定义为一个段。我们可以将长度为N(N≤64KB)的一组代码,
            存在一组地址连续、起始地址为16的倍数的内存单元中,我们可以认为,这段内存是用来存放代码的,从而定义了一个代
            码段。"

那么是不是说,一个代码段的第一个内存单元一定必须是16的倍数才行,假如,我把一段代码写入到内存20001H到20008H里了,是不是就因为第一个20001H不是16的倍数,我就不能把20001H到20008H看成是一个代码段了呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-3 14:11:15 | 显示全部楼层
不一定要是16的倍数,但是和16对齐可以发挥硬件的最大性能,为什么我就不知道了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-4 22:38:39 | 显示全部楼层
20001H到20008H,不是段,楼主还没分清代码段和偏移地址
2000H 这是段,0001H,这是偏移地址
段都要*16,所以段都是16的倍数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-5 15:10:03 | 显示全部楼层

首先谢谢您的回复,毕竟您的回复说得很贴切。很多其他人都懒得理这贴!
我知道20001H到20008H不是段,但书中不是说可以把这种连续的内存单元看成是一个段吗(书24页图29),只不过书中所举的例子都是像10000H到1007FH为一个段或者10080H到100FFH为一个段,那难道不能把10001H到1007FH看作一个段;把10081H到100FFH看作一个段吗?这些不也是连续的内存单元吗。如果可以的话,那么为何又说“用段地址乘以16 定位段的起始地址(基础地址)”,起始地址不就是第一个内存单元吗,10001H及10081H就应该是起始地址啊,但它们不是16的倍数啊。如果您懂得我的意思,麻烦您帮帮我,仔细讲一下给我好吗,我实在是迷茫了,都没心思往下看了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-6 23:03:51 | 显示全部楼层
多尝试啊,多看也不行,得边看边练习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-9 08:34:53 | 显示全部楼层
syleiying 发表于 2014-2-5 15:10
首先谢谢您的回复,毕竟您的回复说得很贴切。很多其他人都懒得理这贴!
我知道20001H到20008H不是段,但 ...

"把10081H到100FFH看作一个段"
这不算一个段,1000H才是段
至于10081H到100FFH,这是一段内存空间,不是段。
在8086CPU中,有4个段寄存器 CS DS SS ES
一个段寄存器最大能存储的是FFFFH
注意,这4个玩意叫“段寄存器”,名字不是瞎起的
存在段寄存器里的数据才叫段
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-9 10:47:02 | 显示全部楼层
powerpro 发表于 2014-2-6 23:03
多尝试啊,多看也不行,得边看边练习。

段是不会有零头的,因为段地址是16进制整数,X16以后就多出来一个零
就好像十进制数中任意一个整数,X10以后,个位数肯定是0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-9 11:02:29 | 显示全部楼层
路过,来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 21:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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