2009-12-07 72 views
1

MASM间接寻址模式,我已经试过以下几种形式和MASM不喜欢任何人:为MOV命令

mov byte [myVariable], al 
mov byte ptr [myVariable], al 
mov [byte myVariable], al 

我缺少什么?为什么我似乎不能使用间接寻址。

我从MASM得到的错误是在表达“缺少操作员”上的一些线路,有的人说‘结构领域有望’

回答

0
mov [myVariable], al 

应该是足够的,甚至只是:

mov myVariable, al 

但话又说回来 MOV字节的PTR [MYVARIABLE],人 应该工作,这让我不知道 “什么是 'MYVARIABLE'?”

+0

它是宣布在顶部如 MYVARIABLE EQU 0404h的地址。 然后一些呼叫正在使用的寄存器与偏移如 BP + 10 – 2009-12-07 16:53:04

+0

间接寻址心不是工作和任一: 和[BP + 22H],77H的结果为“无效指令操作数” – 2009-12-07 16:57:33

+0

改成了MOV ds:[myvariable],al 并得到:“无效的指令操作数” – 2009-12-07 16:59:57

1
myVariable equ 0404h 

不声明变量,它声明一个常量。汇编程序只是用对象文件中的值替换所有常量。因此,

mov [myVariable], al 

变得

mov [0404h], al 

这是无效的。

你得值分配到寄存器,就像这样:

mov di,0404h 
mov byte ptr [di],al 
+0

您可以使用立即作为基准值。你可以这样做:'mov [ds:myVariable],al'(指定基地相对的任何部分) – 2018-02-21 15:20:56