Ho creato un programma che attraverso la funzione 2dh dell'int 21h mi permette di modificate l'orario di sistema (ricordo che stp con windows xp e i programmi li assemblo e tutto con TASM).

Adesso io avevo creato un programma che mo modifica anche la data (funzione 2bh INT 21h) e una volta eseguito il programma, inseriti i valori e tutto, andando a vedere la data questa cambia effettivamente, invece l'orario (che sta in basso a dx sulla barra delle applicazioni) nn me lo modifica per niente, eppure ho di ritorno nel registro al 00h, che indica il settaggio avvenuto con successo...come posso risolvere???


Se volete vedere il programma, eccolo:
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