codice:
data segment
mes db 10,13,'Modifca dell',27h,'ora di sistema',10,13,'$'
mes2 db 10,13,'Ricordiamo che nell',27h,'inserimento di ore,
minuti e secondi, quando si vuole',10,13,'$'
mes3 db 'inserire un',27h,'ora, un minuto o un secondo a una cifra, per esempio 7,
bisogna$'
mes4 db 'inserire prima il valore 0, e poi il numero che si
vuole inserire.',10,13,'$'
ora db 10,13,'Inserisci le ore (es. 21) : $'
minuti db 10,13,'Inserisci i minuti (es.06) : $'
secondi db 10,13,'Inserisci i secondi (es. 54) : $'
error db 10,13,'Il valore inserito ',8ah,' errato...ripetere
l',27h,'inserimento',10,13,'$'
parametro dw ?
hour db ?
minutes db ?
seconds db ?
data ends
code segment
assume ds:data,cs:code
inizio:
mov ax,data
mov ds,ax
mov ax,0003h
int 10h
mov ah,09h
lea dx,mes
int 21h
lea dx,mes2
int 21h
lea dx,mes3
int 21h
lea dx,mes4
int 21h
call inserisci_ora
call inserisci_minuti
call inserisci_secondi
mov ah,2dh
mov ch,hour
mov cl,minutes
mov dh,seconds
mov dl,0
int 21h
mov ax,4c00h
int 21h
; ******************************************
; * INSERIMENTO ORA (ES. 21) *
; ******************************************
inserisci_ora proc near
in_ora:
mov ah,09h
lea dx,ora
int 21h
xor cx,cx
mov parametro,000ah
call somma_valori
mov parametro,0001h
call somma_valori
cmp cl,17h
ja errore1
jmp oraok
errore1:
mov ah,09h
lea dx,error
int 21h
jmp in_ora
oraok:
mov hour,cl
ret
inserisci_ora endp
; ******************************************
; * INSERIMENTO MINUTI (ES.06) *
; ******************************************
inserisci_minuti proc near
in_minuti:
mov ah,09h
lea dx,minuti
int 21h
xor cx,cx
mov parametro,000ah
call somma_valori
mov parametro,0001h
call somma_valori
cmp cl,3bh
ja errore2
jmp minutiok
errore2:
mov ah,09h
lea dx,error
int 21h
jmp in_minuti
minutiok:
mov minutes,cl
ret
inserisci_minuti endp
; ******************************************
; * INSERIMENTO DEI SECONDI (ES.54) *
; ******************************************
inserisci_secondi proc near
in_secondi:
mov ah,09h
lea dx,secondi
int 21h
xor cx,cx
mov parametro,000ah
call somma_valori
mov parametro,0001h
call somma_valori
cmp cl,3bh
ja errore3
jmp secondiok
errore3:
mov ah,09h
lea dx,error
int 21h
jmp in_secondi
secondiok:
mov seconds,cl
ret
inserisci_secondi endp
; ******************************************
; * SOMMATORIA VALORI *
; ******************************************
somma_valori proc near
mov ah,01h
int 21h
sub al,30h
mov ah,0
mov bx,parametro
mul bx
add cx,ax
ret
somma_valori endp
code ends
end inizio