cmp al,13 ;if enter je fdone1 jmp tdone1 fdone1: jmp done1 tdone1: cmp al,10 je fdone1
cmp al,'0' ;if input<0 or input>9 error jb error cmp al,'9' ja error push ax mov ax,10 mul counter0
mov counter0,ax ;counter0=counter*10 pop ax sub bx,bx mov bl,al sub bl,30h
add counter0,bx ;counter=counter+input jmp rd1 error:
mov dx,offset errorm
10
mov ah,09h int 21h mov dl,7 mov ah,2 int 21h jmp done3
tr: ;for jmp do mov dl,al mov ah,02h int 21h mov dl,10 int 21h mov dl,13 int 21h jmp do l2:
mov dx,offset mesg2 mov ah,09h int 21h rd2:
11
mov al,0 ;判断有无输入 mov ah,01 ;read counter1 int 21h cmp al,0 jz rd2
cmp al,13 ;if enter je fdone2 cmp al,10 je fdone2 jmp tdone2 fdone2: jmp done2 tdone2: cmp al,10 je fdone2 cmp al,'0' jb error cmp al,'9' ja error push ax mov ax,10 mul counter1
mov counter1,ax ;counter1=counter1*10
12
pop ax sub bx,bx mov bl,al sub bl,30h ;bh=0
add counter1,bx ;counter1=counter1+input jmp rd2 done1: jmp l2 done2:
jmp out8253 ;after enter two counters ; set 8253 and do it done3:
mov dx,offset mesg3 mov ah,09h int 21h
l3: mov ah,07h int 21h cmp al,'y' je tr cmp al,'y'
13
je tr cmp al,'n' je quit cmp al,'n' je quit mov dl,7 mov ah,02h int 21h jmp l3
out8253: ;work code mov al,00110110b mov dx,283h out dx,al mov ax, counter0 mov dx,280h out dx,al mov al,ah out dx,al mov al,01110110b mov dx,283h out dx,al
14