. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
包含多个段的程序
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
关于实验五(5)(6)assume 是必须有的吗?程序能有几个段?
[待解决]
回复[
2
次 ] 点击[
328
次 ]
waasmedu
[帖 主]
[ 发表时间:2011-12-10 22:12 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2011-11-02 16:00
在做到实验五的第(5)、(6)小题时,我止步了。这两题代码的第一行怎么少了ds、ss和它们相关联的段?我思索良久………………
在教材第78页下方, 作者说:“assume不是一条非要深入理解不可的伪指令,它假设某一段寄存器和程序中的某一个段相关联,在以后编程时,记着要用assume将有特定用途的段和相关的段寄存器关联起来即可。”
assume似乎是必须得有的!用到哪个段都是要和相关的段寄存器相关联的,我一直是这么认为的。
我把第(3)题的程序代码的第一行全部去掉或只保留“assume cs:code”,程序运行时和用书上的代码运行时一样,难道assume这行代码可以去掉?
为什么作者在(5)(6)题只保留“assume cs:code”???明明有数据段为何没有用assume关联???明明需要栈段为何没有用assume关联???
如果一个程序中有多个数据段该如何用assume关联??多个栈段呢???
一个程序中最多能有多少个段?多少个栈段?多少个数据段??多少个代码段???
以上是我关于“段寄存器和段相关联”、“assume”、“程序中的段”的巨大疑惑!!!不得其解,万望看过本求助帖的朋友不吝赐教,我先行谢过!!
tomato
[第
1
楼]
[ 回复时间:2011-12-11 17:56 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
assume是针对编译器来说的,并没有对应的指令,即便是关联了,也必须在程序中将某个段的地址赋给相关联的段寄存器。那么,关联的意义在哪里呢?是的,针对这个题目来说,那个关联是可以去掉的,但是,并不是所有的都可以去掉,比如,在带有地址和长度的标号的程序是不能去掉的,这个是在本书的第16章会讲到的。如果没有关联,编译器将不知道标号的段地址从哪个段寄存器中去取。比如,可以从ds中去,可以从es中取。
waasmedu
[第
2
楼]
[ 回复时间:2011-12-15 17:11 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2011-11-02 16:00
谢楼上!
豁然开朗!
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved