2010-06-21 207 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语法兼容津贴。

相关问题