为什么Visual Studio无需投诉就组装了mov eax,[edx] [ebx] [ecx] [edi]?

时间:2015-11-08 16:36:29

标签: assembly x86 masm

在Visual Studio中,我写道:

mov eax, [edx][ebx][ecx][edi]

但它组装得很好。

为什么它不是无效的有效地址?

1 个答案:

答案 0 :(得分:7)

这似乎是更新版MASM中的一个错误。

使用以下文件作为示例:

    .586

_TEXT   SEGMENT USE32
    mov eax, [edx][ebx][ecx][edi]
_TEXT   ENDS
    END

使用MASM 6.11d会产生以下错误:

t213a.asm(4) : error A2030: multiple index registers not allowed

使用MASM 8.00.50727.42或更新版本,没有错误,并且语句汇编为:

00000000: 8B 04 0F           mov         eax,dword ptr [edi+ecx]

因此[edx][ebx][ecx][edi]不是有效的寻址模式。你正在使用的MASM版本中的一个错误就是接受它,因为它应该拒绝它作为错误。