在Visual Studio中,我写道:
mov eax, [edx][ebx][ecx][edi]
但它组装得很好。
为什么它不是无效的有效地址?
答案 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版本中的一个错误就是接受它,因为它应该拒绝它作为错误。