鱼C论坛

 找回密码
 立即注册
查看: 1373|回复: 6

《汇编语言》实验五(5)的问题

[复制链接]
发表于 2014-11-16 20:48:05 | 显示全部楼层 |阅读模式

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

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

x
定义两个段
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends

为什么 出现如下内存分配:
为什么08 后面是 00 00 00 。。。而不是01 02 03 。。。


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

使用道具 举报

发表于 2014-11-17 06:37:57 | 显示全部楼层
因为每一个段的空间是16(010H)的倍数来定义的
所以不满16个字节就补全 超出比如说17个字节 那就是两个16 = 32字节

段地址*16+ 偏移地址

语文没学好。。不知道解答你的疑惑了么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-17 17:53:36 | 显示全部楼层
那  段地址*16+ 偏移地址  写上去是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-17 17:54:11 | 显示全部楼层
b232wang 发表于 2014-11-17 06:37
因为每一个段的空间是16(010H)的倍数来定义的
所以不满16个字节就补全 超出比如说17个字节 那就是两个16 ...


那  段地址*16+ 偏移地址  写上去是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-17 17:57:42 | 显示全部楼层
b232wang 发表于 2014-11-17 06:37
因为每一个段的空间是16(010H)的倍数来定义的
所以不满16个字节就补全 超出比如说17个字节 那就是两个16 ...

还有为什么 每一个段的空间是16(010H)的倍数????是因为段地址*16+ 偏移地址 的原因吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-17 21:06:05 | 显示全部楼层
你不是分配了两个段a和b嘛,A段分配完后,再分配b时,b地址自动加1了,这个是段地址,段地址要乘以16才是物理地址,所以就有了8后面是0,因为他们是16位的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-17 23:08:11 | 显示全部楼层
说白了 我觉得这是开发软件(编译器)的问题
这样方便我们去调用
它这么设计 我觉得很好啊
这样每一次你可以很轻松的找到首地址 直接ds+1 或者 偏移地址+010h

每一段的空间是16的倍数 我觉得也是为了方便我们去计算和使用

个人见解 :lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 00:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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