2012-09-24 5 views
0

안녕하세요, 저는 x86 어셈블러 코드를 컴파일하는 데 문제가 있습니다. im은 컴파일하는 데 nasm을 사용하지만 컴파일러가 구문이 잘못되었음을 알려줍니다. 나는 단순한 레이블을 사용하고 그것을 점프하기 때문에 그것을 이해하지 못합니까? 누군가가,error : expression syntax error

; reads character and prints ascii code in console 

[BITS 16] 

SEGMENT code 
..start: 
    mov ax, pile 
    mov ss, ax 
    mov ax, topofstack 
    mov sp, ax 

loop:    ; gives syntax error 
    mov ah, 00h 
    int 16h 
    cmp ax, 1c0dh ; user pressed enter, jump to end 
    je end 

    mov ah, 09h  ; write character and attribute at cursor position 
    mov bh, 0h  ; flags... 
    mov bl, 08h 
    mov cx, 01h 
    int 10h 
    jmp loop  ; gives syntax error 

end: 
    mov ax, 04c00h 
    int 21h 

SEGMENT pile stack 
resb 64 
topofstack: 

답변

4

loop명령어입니다 .. 나에게을 설명해 주시겠습니까 나는 loop1처럼 뭔가 라벨을 변경 제안합니다. 흥미롭게도

,이 loop를 포함하는 라인에서 당신이 오류에 대한이 그것을 꽤 안전하게 적어도 명령 nasm -fobj xx.asm하지만, 사실, nasm (2.10.03)의 내 버전에서 오류가 발생하지 않습니다 이것이 문제라고 내기.

이전 버전 (또는 이후 버전)이 있거나 다른 옵션을 사용 중일 수 있습니다. 어쨌든 조사할만한 가치가 있습니다.

+0

NASM '버전 0.98.40 (Apple Computer, Inc. 빌드 11)에서는'이것이 정확하게 문제였습니다. 루프 레이블을 다른 것으로 변경하고 잘 조립합니다. –