ASSUME的作用???

jacky_shen 2004-07-21 09:53:16
ASSUME DS: DATA <---- 既然已经将DATA分配给DS
ASSUME ES: EXTR

...
...

MOV AX, DATA <---- 为什么还要把DATA的地址赋值给DS
MOV DS, AX

MOV AX, EXTR
MOV ES, AX

我的意思是为什么2个步骤就不能由ASSUME来一次完成它。
不懂,所以提出来问问。
...全文
346 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xghost 2004-07-25
  • 打赏
  • 举报
回复
up
YUGIBALSA 2004-07-25
  • 打赏
  • 举报
回复
ASSUME是强行转化的伪指令,只是告诉编译器DS的类型是DATA,但并没有做实际的事情
fanxero 2004-07-22
  • 打赏
  • 举报
回复
data相当于标号,是地址。伪指令assume只是告诉编译器要分配一个段,但并未把段地址确定下来,它也确定不下来,因为谁也不知道程序执行时各个段的段地址是什么呢。于是,在执行程序时,把data(它可代表地址哦)的值给段寄存器,这样段寄存器才真正份配给了各个段啊。另外,不可以mov ds,data,因为8086不允许直接把数据放入段寄存器,只好用ax中转一下。这个问题是编译器的事,跟编译器密切相关。
prettyladys 2004-07-22
  • 打赏
  • 举报
回复
我看了GIANTZZ回复..他的总体意思是: ASSUME可以不写.但用到哪个段的变量时要用段跨越前缀...

但我觉得没必要钻这个牛角尖.....这条指令就是为了告诉编译器 哪个是哪个段而已...首先通知好.....

dunkel 2004-07-22
  • 打赏
  • 举报
回复
bsnhk(欲哥) 的说法固然有道理, 但这个问题还谈不上吧

至于 assume 可以看看下面的帖子里 giantzz 的回复, giantzz 是汇编的前版主
http://search.csdn.net/Expert/topic/1213/1213371.xml?temp=.979748
prettyladys 2004-07-22
  • 打赏
  • 举报
回复
简单点说: ASSUME 是伪指令........只是说明DATA 属于代码段....其实告诉你.


DATA可以随便写成什么.....如果你写成 jacky 那么你要告诉他.ASSUME DS:jacky是属于代码段.(只是告诉一声)

段地址的首地址一定得装给DS.....没任何理由...记住就行了.
bsnhk 2004-07-22
  • 打赏
  • 举报
回复
还是没有一个人能回答!
我觉得在计算机领域中一些最基本的东西,外国人是对中国人保密的,我们想学也没资料可查。
cynic0916 2004-07-21
  • 打赏
  • 举报
回复
而且不声明将DS的值赋予DATA的话,好象直接写下面的那两句会报错,就好象在程序中自己突然加一个未在DATA段声明的变量,程序MASM时就会报变量未声明
cynic0916 2004-07-21
  • 打赏
  • 举报
回复
我认为上面那条只是声明,并未附值,后面那条指令才是给DATA分配DS地址
SDFDSAC 2004-07-21
  • 打赏
  • 举报
回复
ASSUME只是指示汇编程序设定段与段寄存器的联系,并不设置段寄存器的初值,段寄存器的初值是由程序装入的

21,458

社区成员

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

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