TASM程序在mov之后冻结

时间:2014-12-01 12:41:39

标签: assembly x86 tasm dosbox

我的程序存在问题。一切顺利,除了mov bx,0冻结程序。此外,dosbox给出错误:

  

非法读取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 个答案:

答案 0 :(得分:0)

您的.386位置错误。必须在.model small指令 之后设置(如果有的话)