2014-12-01 3 views
0

내 프로그램에 문제가 있습니다. mov bx를 제외하고는 모두 잘 작동하며 0은 프로그램을 고정시킵니다. 또한 dosbox에서 오류가 발생합니다.mov 후 TASM 프로그램이 멈 춥니 다.

Illegal read from de74395c, CS:IP 1a2: 140

실마리가 없습니다. 내가 loadfix 명령을 시도했지만 도움이되지 않았다. 어떤 충고? 고맙습니다.

LOCALS @@ 
.386 
.model small 

.stack 1000h 

.code 
start:   

check_args: 
    call get_argc 

exit: 
    mov ah, 4Ch 
    int 21h 

proc get_argc 
    mov bx, 0   
    jmp exit 
    mov di, 80h  
    mov cx, es:[di] 

    @@L1: 
    inc di   
    mov al, es:[di] 
    cmp al, 20h  
    je @@L1   
    cmp al, 09h  
    je @@L1   
    cmp al, 0Dh  
    je @@done  

    inc bx   

    @@L2: 
    inc di 
    mov al, es:[di] 
    cmp al, 20h 
    je @@L1 
    cmp al, 09h 
    je @@L1 
    cmp al, 0Dh 
    je @@done 
     jmp @@L2 

    @@done: 
     mov ax, bx 
     ret 
endp 

end start 
+1

_ "mov bx, 0'은 프로그램"_을 고정시킵니다. 명령 자체가 불법 주소에있는 경우가 아니라면 그럴 가능성은 희박합니다. 코드의 관련 부분을 게시 할 수 있습니까? – Michael

+0

소스 코드 없이는 말할 방법이 없습니다. – Ari0nhh

+0

업데이트 됨. 그것은 전체 코드는 아니지만 다른면은 어떤 식 으로든 실행되지 않으므로 삭제했습니다. – Tomas

답변

0

.386의 위치가 잘못되었습니다..model small 지시문 이후에 설정해야합니다 (있는 경우). .