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 : 유효하지 않은 니모닉 일 때만 : Jester :'-Worphan- 레이블 '옵션이 존재합니다. OP의 프로그램은'str'을'str1'으로 변경할 때 어셈블됩니다. ('cmp mem, immediate' 명령어에서 피연산자 크기가 누락 된 것을 제외하고) –
두통이 적고 항상 사용하는 편이 낫습니다. 또한 내년에 인텔이 라벨 이름과 충돌하는 새로운 지침을 도입하면 어떻게 될지 ... – Jester