@DATA 等价于 DGROUP, 这是个组名, 它包含了 .DATA, .DATA?, .CONST, .STACK 等 near 属性的数据段, 即等价于 DGROUP GROUP .DATA, .DATA?, .CONST, .STACK 这样的语句. 当上面提到的这些段是 near 属性时, 比如 SMALL 内存模式, 它们将被分配在一个实际内存段里, 其中的编址也是连续的. 即它们虽然有各自的逻辑段名, 但在最后的 .exe 中, 它们的实际的物理段址是一样的. @DATA 就是对这个合并之后的段的引用. 要访问这些逻辑段里的内容的话, 就需要先置 DS 至 @DATA 了. 如果是 dos 下程序且使用了 .STARTUP 的话, 就可以不要自己设定 DS 了, 因为 .STARTUP 代码中就已经包含了这部分的.
如果想要使用 @DATA 这样的方式, 就必须先用 .MODEL 语句指定程序内存模式.
mov ax, @data
最新推荐文章于 2021-06-06 20:34:53 发布