当前位置:编程学习 > 汇编语言 >>

汇编语言 MOV [SI] [2000H]这条指令错误。 谁能详细解释下,非常感谢。

答案:Intel 的 CPU,功能是很有限的,不能随心所欲的指挥它。 一定要按照它能够识别的指令来编写程序。 传送指令的源、目的,如果都是存储器,CPU就不干了,这就是错误指令。 以后学到乘法、除法等等指令,就知道了,各指令的应用范围是很狭窄的。
其他:mov指令不能用于内存到内存的操作 对于MOV 指令而言,[]表示地址单元,而2000H已经是一个地址了,或称着立即数吧,不能这样传送!还有一点:两个操作数之间应该用逗号隔开!正确的是MOV [SI] ,2000H 1、MOV指令不能用于内存到内存的操作
2、两个操作数的类型都不确定 
3、两个操作数之间用逗号隔开 MOV [SI],[2000H]

打的都不完整 主要是语法错误,应该看看有关语法的内容。因为不同的机种、公司都有不的定义。 应该改成(假设数据是双字)
mov eax,DWORD  ptr [2000h]
mov DWORD  ptr [si],eax
因为汇编指令中要求每条指令中必须至少有一个操作数为寄存器,你那条指令中操作数都不是寄存器,所以不允许。 

上一个:汇编语言中Push ax指令执行后,ax的原内容在ax寄存器中还保存么?
下一个:汇编填空题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,