2010-06-21 205 views

回答

0

如果我沒有記錯,那麼「PTR」運算符就在那裏,因爲在MASM中,有時您可以擁有一個看起來像常規值但實際上是指針的表達式。

如果兩條語句都適合您,我只能說,將它們組合起來並確保它們都生成相同的字節。他們應該是一樣的,考慮到[xxxxxxxx]中的「xxxxxxxx」是定義的指針,但是自從我上次用MASM編碼以來已經有一段時間了。 (我傾向於傾向於NASM,對此類事情的疑惑就少得多了。)

0

用masm的說法,DWORD PTR是一個指針重寫,IOW通常稱爲一個強制轉換。它基本上是指「將地址XXXXXXXX視爲DWORD指針」。

masm實際上鍵入其數據項。所以,如果XXXXXXXX已被確定爲

XXXXXXXX DWORD SomeAddress ; Presumably a function entry point. 

然後

CALL XXXXXXXX 

是夠了,就會產生,如果由於某種原因,XXXXXXXX是不是定義相同的代碼

CALL DWORD PTR XXXXXXXX 

OTOH, as

XXXXXXXX WORD ? 
      WORD ? 

那麼唯一的辦法讓MASM裝配到XXXXXXXX呼叫而不產生MAMS錯誤會

CALL DWORD PTR XXXXXXXX 

方括號[]不帶任何東西到板在這種情況下,BTW。對於其他一些彙編程序,它們表示間接性。在上面的例子中,masm並不需要它們。在其他上下文中(基本+索引表達式),它們用於包圍索引寄存器和/或值。

哦,順便說一句:

CALL DWORD [XXXXXXXX] 

今天是一個不同尋常的MASM語法(每MASM 6文檔,書籍和他們的例子),大概相當於一些較老的MASM語法兼容津貼。

相關問題