怪胎 发表于 2012-12-16 14:47:57

assume 的具体作用

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

.......

lyoal 发表于 2012-12-16 14:47:58

[b]你想让计算机帮你编译,又不告诉它那些是给编译器的,那些是给CPU执行。它当然就不知道如何帮你解决问题了。ASSUME是给编译看的,告诉编译器在代码中那个是CS段,那个DS段,那个是ES段。如果是CS段,编译器就知道,哦!让CPU执行的指令在这里,然后,编译器就是帮你把MOV,ADD,DEC,INC等CPU的指令用1和0表达出来传送给CPU,让CPU去执行去,其它,如标号这些都给编译器的,可以自定义的东东。
以上是俺的理解,希望能帮到你,朋友!

s0512 发表于 2012-12-16 15:10:02

ASSUME是给编译器看的

s0512 发表于 2012-12-16 15:15:12

如使用DATA段中定义的数据,编译器会检查是否被ASSUME定义,如有定义,就加上定义的前缀。
哎。。表达能力太差:dizzy:

s0512 发表于 2012-12-16 15:16:18

而mov ds,ax是给CPU执行的。。。你不指给它,它就不知道

怪胎 发表于 2012-12-16 15:21:35

s0512 发表于 2012-12-16 15:15 static/image/common/back.gif
如使用DATA段中定义的数据,编译器会检查是否被ASSUME定义,如有定义,就加上定义的前缀。
哎。。表达能力太 ...

如果没定义呢

shdfsbgfjks 发表于 2012-12-18 11:16:19

assume只是给编译器说定义了数据段,给ds赋值是cpu明确数据段在内存中的位置

怪胎 发表于 2012-12-21 14:37:36

终于懂了                           
页: [1]
查看完整版本: assume 的具体作用