77问答网
所有问题
汇编语言:为什么MOV DS,[2000H]语句不合法,而MOV DS,DS:[2000H]就合法?
如题所述
举报该问题
推荐答案 2012-12-19
编译软件,有错误。
DS 是段寄存器,可以用
存储器
操作数来赋值,但是不可用立即数赋值。
MOV DS, [2000H],按照教材上的规定,[2000H] 是存储器操作数。而:
MOV DS, 2000H,中的 2000H 才是立即数。
但是,编译软件,并不按照这个规则。
在编译软件眼里,上面的两种形式,都是《立即数》。
只有这种写法:MOV DS,DS:[2000H],编译软件,才认为是《存储器操作数》。
只有在 DEBUG 环境中,其编译功能才是正确的。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/IvpN3Nv38.html
其他回答
第1个回答 2013-04-04
编译软件错误。
DS段寄存器,存储器操作数分配,但无法立即指派。
MOV DS,2000H],在按照规定的教科书,[2000H]是内存操作。 :
MOV DS,2000H,2000H是即时的。
但是,编译器软件,不遵循这个规则。
上述两种形式,分别是“立竿见影”,在编译的软件的眼睛。
只有这样写的:MOV DS,DS:[2000H]编译软件之前内存操作数。
只有在DEBUG环境,编译器的功能是正确的。
第2个回答 2012-12-18
你运行没有 可以的
相似回答
MOV
DS,2000H
为什么不
行
答:
8086CPU不支持将数据直接送入段寄存器的操作,DS是一个段寄存器,
所以 mov ds, 2000H是非法的指令 可以用一个寄存器来中转
,如:mov bx, 2000H mov ds, bx
汇编
中
mov
ds,
1000
H
语法对吗?
答:
DS是段寄存器,可以用存储器操作数赋值,但是不可用立即数赋值。MOV
DS, [2000H],
按照教材上的规定
,[2000H]
是存储器操作数。而
:MOV
DS,
2000H,中的 2000H 才是立即数。但是,编译软件,并不按照这个规则。
MOV
DS
2000H
这条
语句
有错吗?错在哪?
答:
有两个错,一MOV的两个参数之间需要空格,二段寄存器不允许直接赋值,正确的方法是
:MOV
AX
,2000
MOV
DS,
AX
求助!问问大家
MOV
DI
,[2000H]
这句指令错在哪?DI在指令里是怎么使用的...
答:
如果是在debug中,立即数要求是16进制,不能再加h,所以错误。如果是在masm或tasm等宏汇编的环境中,这条语句并无错误。di寄存器是目的变址寄存器,用于保存偏移值,也可以作为通用寄存器使用。
汇编语言
MOV
[SI]
[2000H]
这条指令错误。 谁能详细解释下,非常感谢...
答:
Intel 的 CPU,功能是很有限的,不能随心所欲的指挥它。一定要按照它能够识别的指令来编写程序。传送指令的源、目的,如果都是存储器,CPU就不干了,这就是错误指令。以后学到乘法、除法等等指令,就知道了,各指令的应用范围是很狭窄的。
汇编语言mov
问题
答:
汇编中mov的调用格式是
:mov
a,b即将b的值移动到a中,ax是一个寄存器
,[2000h]
是偏移地址(一般加上中括号的是偏移地址),而题目中默认的段地址是放在ds中,所以该内存的真正地址是(即物理地址)
:ds
(段地址)*16+[2000h](偏移地址)=32000h,而32000h中的值是3050h(题目中给出的),...
汇编语言
中怎样判断源操作数与目的操作数的寻址方式?
答:
寻址格式中,加方括号的是地址,没加方括号的是操作数,比如:2000H是立即数
,[2000H]
是内存的地址;BX是寄存器BX里面的数据,[BX]是BX的数据作地址。1、
MOV
ES,AX 都是寄存器寻址2、ADD
DS:[
12
H],
AL 源:寄存器寻址 目的:直接寻址3、SUB BX,1200H 源:立即寻址 目的:寄存器寻...
大家正在搜
汇编语言语句
汇编语言语句有哪两种
汇编语言语句类型
汇编语言结束语句
汇编语言三种基本语句
汇编语言输出语句
汇编语言循环语句
宏汇编语言的语句有哪三部分组成
汇编语言程序的语句有两大类
相关问题
汇编语言 请问mov DS:2000h ,ax 为什么不对
MOV DS,2000H 为什么不行
为什么寄存器存址指令 MOV DS,AX 合法,而MOV...
为什么寄存器存址指令MOVDS,AX合法,而MOVCS,AX...
MOV DS 2000H 这条语句有错吗?错在哪?
汇编语言直接寻址方式:MOV AX,[2000H] 如DS=...
MOV AX,2000H和MOV AX,DS[2000H]的...