如题,一些教材中说可以的,但我用debug发现不行,如:
mov bx, 1000
mov [bx], 1234
或:
mov [1000], 1234
都被提示错误,求解答,谢谢!
------解决方案--------------------
错误信息是Access Violation?
mov [1000], 1234
这个是语法错误,至于为什么不能两个操作数都是存储器地址,因为内存只支持Read和Write两种状态,如果支持从内存到内存的mov的话,在微码层还是要翻译成[mem1]->reg->[mem2],这样增加了处理器的设计的复杂性。
mov bx, 1000
mov [bx], 1234
这个语法正确,但是1000=0x000003E8在windows系统中是一个不可以访问的地址。每个进程的虚拟地址空间中的0x00000000 - 0x0000FFFF这最前面64K叫空指针赋值保护区是不能访问的,一旦程序试图访问者64K会立即引起Access Violation错误,用于帮助程序员发现空指针引用。