. : : 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