assume 的具体作用
ASSUME DS: DATA <---- 既然已经将DATA分配给DSASSUME 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去执行去,其它,如标号这些都给编译器的,可以自定义的东东。
以上是俺的理解,希望能帮到你,朋友!
ASSUME是给编译器看的 如使用DATA段中定义的数据,编译器会检查是否被ASSUME定义,如有定义,就加上定义的前缀。
哎。。表达能力太差:dizzy: 而mov ds,ax是给CPU执行的。。。你不指给它,它就不知道 s0512 发表于 2012-12-16 15:15 static/image/common/back.gif
如使用DATA段中定义的数据,编译器会检查是否被ASSUME定义,如有定义,就加上定义的前缀。
哎。。表达能力太 ...
如果没定义呢 assume只是给编译器说定义了数据段,给ds赋值是cpu明确数据段在内存中的位置 终于懂了
页:
[1]