有个计时程序,如何把它停止?因为它不断计时,我想按某键它停止,按退出键退出!

data segment
buffer db 10
       db ?
       db 10 dup(?)
data   ends
stack segment  stack
       db 100 dup(?)
stack ends
code segment
      assume cs:code,ds:data,es:data,ss:stack
begin:  
        mov ax,data
        mov ds,ax
       
        mov ch,0    
        mov dh,0    
        mov dl,0    

again:  call delay   
              mov al,dl
        add al,01h
        daa
        mov dl,al
        cmp al,60h
        jne dispy
        mov dl,0
        mov al,dh
        add al,1
        daa
        mov dh,al
        cmp al,60h
        jne dispy
        mov dh,0
        mov al,ch
        add al,1
        daa
        mov ch,al
        cmp al,24h
        jne dispy
        mov ch,0
        
dispy: lea bx,buffer    
       mov al,0dh       
       mov [bx],al
       inc bx
       
       mov al,ch
       call tran
       inc bx
       mov al,':'
       mov [bx],al
       inc bx
       mov al,dh
       call tran
       inc bx
       mov al,':'
       mov [bx],al
       inc bx
       mov al,dl
       call tran
       inc bx
       mov al,'$'
       mov [bx],al
       push bx
       push cx
       push dx
       lea dx,buffer
       mov ah,9
       int 21h
       pop dx
       pop cx
       pop bx
       jmp again


tran proc
       mov cl,al
       shr al,1
       shr al,1
       shr al,1
       shr al,1
       or  al,30h
       mov [bx],al
       inc bx
       mov al,cl
       and al,0fh
       or al,30h
       mov [bx],al
       ret
tran endp

delay   proc
      push cx
      push dx
     
    
     mov dx,4999h
up:   xor cx,cx    
a:      nop  
       loop a
       dec dx      
       jnz up
      
       pop dx
       pop cx
     
       ret
delay   endp



code ends
     end begin