错误:逗号,冒号,修饰符或操作数后面的行结尾
我正在使用NASM,x86,它给了我这个错误,我不明白为什么
%include "io.inc" section .data msg: db "hello world",0 msg2: db 13 count: dw 13 section .text extern printf global CMAIN CMAIN: push ebp mov ebp,esp mov eax,msg mov ebx,count mov esi,0 mov edi,0 add edi,count dec edi again: mov eax, msg[esi] mov msg2[edi],eax inc esi dec edi loop again call printf mov esp,ebp pop ebp ret
因为这两行不在NASM语法中。
mov eax, msg[esi]
几乎被解析为mov eax,msg
(加载带有msg
地址的eax
),但是然后发生意外[esi]
而不是新行。
mov msg2[edi],eax
很难猜测,解析器( mov immediate,eax
不存在)的情况,但是也没有任何mov msg2[edi],eax
。
如果你想使用内存值,把整个地址计算放在括号内,如:
mov eax, [msg+esi]
mov [msg2+edi], eax
请参阅NASM文档 - 3.3有效地址,了解内存操作数的完整语法。
链接地址: http://www.djcxy.com/p/86847.html上一篇: error: comma, colon, decorator or end of line expected after operand