jz print jmp over mov bl,string jc p0 sub al,48 mov ah,00h mov dl,10 div dl mov bl,ah mov dl,al
mov ah,02h int 21h mov dl,bl add dl,48 mov ah,02h int 21h jmp p1
mov dl,string mov ah,02h inc string mov ah,02h
print:
cmp bl,58
mov al,bl
add dl,48
p0:
int 21h p1:
mov dl,0dh int 21h
mov bx,0
; mov dl,0dh ;int 21h
over:
iret
;msg:
;string db 'one second $'
myproc endp
code ends end start
--按a键后,保留旧时间,重新另起一行开始计时 ;----使用21H 的0BH功能检查按键是否按下
data segment pian dw ? duan dw ? string db 48 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax
mov ax,351ch int 21h
mov pian,bx mov duan,es push ds
mov dx,offset myproc mov ax,seg myproc mov ds,ax mov ax,251ch int 21h pop ds
begin: mov cx,0
mov bx,0
next: cmp cx,1080; 60*18 jnz next
mov dx,pian mov ax,duan mov ds,ax mov ax,251ch int 21h mov ax,4c00h int 21h
myproc proc sti
push ax push bx push cx push si
mov ah,0bh int 21h sub al,00h jz ok mov ah,07h int 21h cmp al,61h jz crazy jmp ok
crazy: pop si pop cx
pop bx pop ax
mov ah,0ch;清空输入缓存区 int 21h mov ah,02h mov dl,0ah int 21h
mov dl,0dh int 21h
; jmp begin mov cx,0 mov bx,0
mov string,48;string 清零重新计数 jmp over
ok:
pop si
pop cx pop bx pop ax
inc bx cmp bx,18 jz print jmp over mov bl,string jc p0 sub al,48 mov ah,00h mov dl,10 div dl mov bl,ah mov dl,al
mov ah,02h int 21h
inc cx
print:
cmp bl,58
mov al,bl
add dl,48