新手求教

灵魂制造者 2014-07-02 08:10:18
最近闲来无事 重新翻出来大学的汇编复习一下(忘光了)
在王爽老师的《汇编语言》中 实验5的(1)中
data段、stack段、code段的段地址只差1 这点不懂
(1)按照我的理解 系统加载程序时,程序在内存中第一位应该是data段 其次stack段 再次code段
但是data段有16个字节 stack段有10字节 为什么会只差1呢?
(2)data段和stack段总共26字节 偏移量应该是16+10-2=24 这应该是10进制 为什么给sp赋值是24h?

求大神解答!多谢!
...全文
138 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
灵魂制造者 2014-07-03
  • 打赏
  • 举报
回复
也就是说数据占用空间大于n-1倍10h且小于n倍10h其段地址与上一段段地址的差为n是么?
zara 2014-07-03
  • 打赏
  • 举报
回复
因为段址的单位是 10h 即 16 字节,亦即段址在计算形成最后的有些地址 EA 时,是要乘以 10h 即左移 4 位的;这样,data 段的 16 字节或 stack 段的 10 字节,只需要分配 10h 字节就可以了,折算到段址上,就是 1 了。
另外,stack 堆栈段分配 10h 字节是很不合适的,对一般的程序来说,尤其是可能被调试时,这样的堆栈段太小了,建议至少有 64 (40h) 字节,或者不指定而使用缺省的 64K 段的末端区间。
灵魂制造者 2014-07-03
  • 打赏
  • 举报
回复
但是答案上面是只差1啊 我感觉很费解
Explorerlxz 2014-07-03
  • 打赏
  • 举报
回复
在内存中,段地址分配并不像你想的那么简单,即便数据段只有16字节,程序中数据后面紧跟着代码段,段地址也未必差1,涉及到内存分配!还有堆栈的方向楼主没有搞懂, 先看懂push,pop对栈顶指针的影响再说!

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧