鱼C论坛

 找回密码
 立即注册
查看: 5130|回复: 7

assume 的具体作用

[复制链接]
发表于 2012-12-16 14:47:57 | 显示全部楼层 |阅读模式
3鱼币
ASSUME DS: DATA <---- 既然已经将DATA分配给DS 
ASSUME ES: EXTR 

... 
... 

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

MOV AX, EXTR 
MOV ES, AX 
如果不要assume  程序段就会变的更多了      
a segment
....
a ends

b segment
...
b ends

c segment
...
c ends

.......

最佳答案

查看完整内容

[b]你想让计算机帮你编译,又不告诉它那些是给编译器的,那些是给CPU执行。它当然就不知道如何帮你解决问题了。ASSUME是给编译看的,告诉编译器在代码中那个是CS段,那个DS段,那个是ES段。如果是CS段,编译器就知道,哦!让CPU执行的指令在这里,然后,编译器就是帮你把MOV,ADD,DEC,INC等CPU的指令用1和0表达出来传送给CPU,让CPU去执行去,其它,如标号这些都给编译器的,可以自定义的东东。 以上是俺的理解,希望能帮到你,朋 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-16 14:47:58 | 显示全部楼层
[b]你想让计算机帮你编译,又不告诉它那些是给编译器的,那些是给CPU执行。它当然就不知道如何帮你解决问题了。ASSUME是给编译看的,告诉编译器在代码中那个是CS段,那个DS段,那个是ES段。如果是CS段,编译器就知道,哦!让CPU执行的指令在这里,然后,编译器就是帮你把MOV,ADD,DEC,INC等CPU的指令用1和0表达出来传送给CPU,让CPU去执行去,其它,如标号这些都给编译器的,可以自定义的东东。
以上是俺的理解,希望能帮到你,朋友![/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-16 15:10:02 | 显示全部楼层
ASSUME是给编译器看的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-16 15:15:12 | 显示全部楼层
如使用DATA段中定义的数据,编译器会检查是否被ASSUME定义,如有定义,就加上定义的前缀。
哎。。表达能力太差:dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-16 15:16:18 | 显示全部楼层
而mov ds,ax是给CPU执行的。。。你不指给它,它就不知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-16 15:21:35 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 11:16:19 | 显示全部楼层
assume只是给编译器说定义了数据段,给ds赋值是cpu明确数据段在内存中的位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-21 14:37:36 | 显示全部楼层
终于懂了                           
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 00:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表