NASMを使用してアセンブリコードを作成しようとしていますが、何らかの理由でエラーが発生し続けます。それは文字列を宣言した後、カンマ、コロン、デコレータ、または行の終わりを期待していると言われていますが、どうすればそれが問題になるかわかりません。NASM: "カンマ、コロン、デコレータまたはオペランドの後に続く行末"が文字列を宣言するとき
section .text
global main
main:
mov edi,str
lab3:
cmp [edi],' '
je lab1
cmp [edi],0x0
je lab2
mov eax,4
mov ebx,1
mov ecx,edi
mov edx,1
int 0x80
inc edi
jmp lab3
lab1:
inc edi
mov eax,4
mov ebx,1
mov ecx,nwln
mov edx,1
int 0x80
jmp lab3
lab2:
mov eax,1
int 0x80
section .data
str db 'this is a test',0x0 ;this is the line giving the error
nwln db 0xa
nasmにはラベルの後にコロンが必要です。つまり、 'str:db 'これはテストです。'、0x0' – Jester
@Jester:有効でないニーモニックである場合にのみ、ラベルオプションが存在します。 OPのプログラムは、 'str'を' str1'に変更するときにアセンブルされます。 ( 'cmp mem、immediate'命令のオペランドサイズが足りないことを除いて) –
頭痛の少ない、常に使いたい方がいいです。また、来年のインテルがあなたのラベル名と衝突する新しい命令を導入すればどうなるのでしょうか... – Jester