在Visual Studio中,我写道:
mov eax, [edx][ebx][ecx][edi]
Run Code Online (Sandbox Code Playgroud)
但它组装得很好.
为什么它不是无效的有效地址?
它似乎是更新版MASM中的一个错误.
使用以下文件作为示例:
.586
_TEXT SEGMENT USE32
mov eax, [edx][ebx][ecx][edi]
_TEXT ENDS
END
Run Code Online (Sandbox Code Playgroud)
使用MASM 6.11d会生成以下错误:
t213a.asm(4) : error A2030: multiple index registers not allowed
Run Code Online (Sandbox Code Playgroud)
使用MASM 8.00.50727.42或更新版本时,没有错误,并且语句汇编为:
00000000: 8B 04 0F mov eax,dword ptr [edi+ecx]
Run Code Online (Sandbox Code Playgroud)
所以[edx][ebx][ecx][edi]不是有效的寻址模式.您正在使用的MASM版本中的错误是在它应该拒绝它作为错误时接受它.