小旭哥0922 发表于 2013-3-31 12:50:47

ASSUME伪指令

本来我对ASSUME没什么疑惑的,可是学着学着,疑惑就来了。。。

假如,程序中有个代码段CODE
对于ASSUME CS:CODE 这个伪指令,我还能接受。按照我的理解,因为DOS会自动给CS寄存器赋值,所以你要告诉系统,CS指向哪个段。这个我可以理解。

但是,假如程序中还有个数据段DATA
我就想不通这个伪指令,ASSUME DS:DATA
我觉得多此一举呀
因为,在程序中,我们还是需要人为的把数据段的地址赋值给DS
MOV AX, DATA
MOV DS, AX
这两条语句,已经把数据段的段地址给了DS,我不约定DS:DATA也应该可以呀。
为什么还要写ASSUME DS:DATA呢

NGtailang 发表于 2013-3-31 13:03:57

傻了吧,发明程序的人只是吃饱了没事规定这么做的而已,有必要纠结吗,接受就行了

小旭哥0922 发表于 2013-3-31 13:05:23

NGtailang 发表于 2013-3-31 13:03 static/image/common/back.gif
傻了吧,发明程序的人只是吃饱了没事规定这么做的而已,有必要纠结吗,接受就行了

h好吧,暂时就接受吧

NGtailang 发表于 2013-3-31 13:10:45

小旭哥0922 发表于 2013-3-31 13:05 static/image/common/back.gif
h好吧,暂时就接受吧

呵呵。多看书。你就会明白了。或者多看小甲鱼的视频。一定要多看多理解

小小小小鱼 发表于 2013-3-31 13:36:09

你理解错了~~DOS是不会给 CS IP 赋值 也不会给任何段寄存器赋值 ~~给CS IP 赋值 是因为 你有 开始标号 如果没有标号 就会给 CS赋值为你 加载的地址 - 256个PSP字节 也就是你数据段的 第一个字节~   其实 不管那个段寄存器~ 都是一个地址指针~ 不过CPU 规定 CS IP 指向的 就是 可执行的代码段~   真正的赋值 是 mov AX data MOV ds,ax

阳光影子 发表于 2013-3-31 20:13:54

你怎么安排CUP就怎么安排,跟着自己的思路走

czfengyong 发表于 2013-3-31 22:33:54

页: [1]
查看完整版本: ASSUME伪指令