2014-06-20 3 views
0

내 코드가 작동하지 않습니다. 문제는 lea입니다 (6 번 줄). NetBeansIDE는 "opcode와 피연산자의 잘못된 조합"이라고 말합니다. 이 문제를 해결할 수있는 임시 해결책이 있습니까? 도움을 주시면 감사하겠습니다.문자열의 한 행에 3 개의 동일한 문자가 있는지 확인하십시오.

global _main 
section .data 
text: db "fdkvemDFderft", 0 

section .text 
_main: 
    lea si, text 
no: 
    lodsb 
    or al,al 
    jz exit 
    cmp al,[si] 
    jnz no 
    cmp al,[si+1] 
    jnz no 
    ;code 
exit: 
    ;code 

    mov eax, 4C00h 
    ret 

-f win32 

답변

1

시도 :

lea si, [text] 

레아 주소 지정 모드 주소 계산에 의한 주소를로드합니다. 따라서, 우리는이 주소로 레이블을 표현합니다.

많은 것 아마

mov si, text 
+0

감사합니다. 그러나 여전히 작동하지 않습니다. 지금은 문제없이 컴파일됩니다. 'mov si, text'라고 쓸 때 "coff 형식은 32 비트가 아닌 위치 재 지정을 지원하지 않습니다." – user3025848

+0

글쎄, 그 또 다른 문제. COFF 형식을 생성하지 마십시오. MS/DOS 함수 호출 (btw, AX에 4c00H를로드해야 함)을 사용하여 프로그램을 종료하는 것이 거의 없습니다. 0100H로 ORG 된 일반 이진 이미지 인 COM 파일을 생성하려고합니다. COFF는 ELF가 대체하기 전에 유닉스에서 주로 사용되었습니다. –

+0

실제로, 당신은 teminate하지 않는다 - 당신은 단지 종료를 설정하기 시작하지만 그것을 완료하지 않는다. 비록 AX에서 4c00은 Windows 프로그램을 종료하는 방법이 될 수도 있지만, 나는 창문에 대해 아무것도 몰라. –

관련 문제