汇编语言:为什么MOV DS,[2000H]语句不合法,而MOV DS,DS:[2000H]就合法?

如题所述

编译软件,有错误。

DS 是段寄存器,可以用存储器操作数来赋值,但是不可用立即数赋值。

MOV DS, [2000H],按照教材上的规定,[2000H] 是存储器操作数。而:
MOV DS, 2000H,中的 2000H 才是立即数。

但是,编译软件,并不按照这个规则。
在编译软件眼里,上面的两种形式,都是《立即数》。

只有这种写法:MOV DS,DS:[2000H],编译软件,才认为是《存储器操作数》。

只有在 DEBUG 环境中,其编译功能才是正确的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-04
编译软件错误。

DS段寄存器,存储器操作数分配,但无法立即指派。

MOV DS,2000H],在按照规定的教科书,[2000H]是内存操作。 :

MOV DS,2000H,2000H是即时的。

但是,编译器软件,不遵循这个规则。

上述两种形式,分别是“立竿见影”,在编译的软件的眼睛。

只有这样写的:MOV DS,DS:[2000H]编译软件之前内存操作数。

只有在DEBUG环境,编译器的功能是正确的。
第2个回答  2012-12-18
你运行没有 可以的
相似回答