2009-12-07 85 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