Assembly TASM程序在mov后冻结

Assembly TASM程序在mov后冻结,assembly,x86,tasm,dosbox,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 g

我的程序有问题。除了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

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

mov bx,0
冻结程序”。这似乎不太可能,除非指令本身位于非法地址。你能发布你的代码的一些相关部分吗?如果没有源代码,就无法判断。更新。这不是完整的代码,但另一方不会以任何方式执行,所以我为您删除了它。如果您对代码进行注释,我会查看它。重新启动pc帮助:?