. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
包含多个段的程序
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
[2009-11-11 08:15] [实验5]-1(p123)编写,调试具有多个段的程序
[待解决]
回复[
3
次 ] 点击[
484
次 ]
sysop
[帖 主]
[ 发表时间:2009-11-11 08:29 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:2
信誉值:1
注册日期:2008-06-04 14:46
①CPU执行程序,程序返回前,data段中的数据不发生变化。
②CPU执行程序,程序返回前,cs=[code],ss=[stack],ds=[data]
③设程序加载后,code段的段地址为X,则data段的地址为X-2,stack段的地址为X-1(此答案只对该程序有效)
======
我的问题:
1. 第③问中,如果data段的长度超过64K,是不是就不存在上述的关系了(X-1,X-2)?
2. 同样第③问中,操作系统为每一段都寻找一段合适的空间,code段,data段,stack段,一定会连续在一起么?
rockcat
[第
1
楼]
[ 回复时间:2009-11-11 10:41 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:8
信誉值:0
注册日期:2009-10-28 11:47
第1问,data段长度超过64K?晕晕的!这样在程序内部定义起来,不得累死啊!32768个DW型~~
第2问,暂时的理解,只要按顺序定义,那就是连接的
初学新手,请多指教
sysop
[第
2
楼]
[ 回复时间:2009-11-13 07:50 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:2
信誉值:1
注册日期:2008-06-04 14:46
本题中,是先定义了data,然后定义了stack。
能不能累死,这是另一说,但就这个题来说,
如果真得超过了64K,是必须拆解成两个以上的段,还是另有做法?
教材P120有一段话“但如果数据、栈或代码需要的空间超过64K,就不能放在一个段中(一个段的容量不能大于64KB,是我们在学习中所有的8086模式的限制,并不是所有的处理器都这样)”
--这话说明了,无论是数据,栈或代码,还是有可能超过64K的。
coolyujiyu
[第
3
楼]
[ 回复时间:2009-12-17 13:23 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:2
信誉值:0
注册日期:2009-12-07 22:09
不是看超不超过64K,而是看超不超过16个,也就是10H个byte单元。。。10H对应的是物理地址吧。。转换成段地址就是1H了。。所以差距就是1了。。明白没哇??
也就是如果开辟的空间是17个,那就是占用了20H个单元。。。
他们之间的关系就是
X X-4 X-2了。。。
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved