.model small .stack 100h .data message db "La date : $" messagedate dw 15 dup (?) siecle dw ? annee dw ? mois dw ? jour dw ? hh dw ? mm dw ? sec dw ? messageheure dw ? message2 db "L'heure : $" dix db 16 .code mov ax,@data mov ds,ax call date ; affiche la date mov ah, 2 mov dl, 10 int 21h mov dl, 13 int 21h ; saut de ligne call heure ; affiche l'heure mov ax,4C00h int 21h date proc near push bx push dx push es push di mov dx,offset message mov ah,09h int 21h ; affiche le message d'invite xor ax,ax mov ah,4 int 1ah ; Lecture de la date sur l'horloge temps réel mov al,ch ; ch = Siècle (nombre 19 ou 20) div byte ptr [dix] ; division par 16 => résultat dans al et reste dans ah or ax,3030h mov siecle,ax ; ax contient maintenant la chaine "19" ou "20" xor ax,ax mov al,cl ; cl = Année div byte ptr [dix] or ax,3030h mov annee,ax xor ax,ax mov al,dh ; dh = Mois div byte ptr [dix] or ax,3030h mov mois,ax xor ax,ax mov al,dl ; dl = Jour div byte ptr [dix] or ax,3030h mov jour,ax xor ax,ax xor cx,cx xor dx,dx ; initialisation de es et di pour l'insctruction sto ( copie de l'accu dans [es:di] ) mov di,offset messagedate mov ax,@data mov es,ax mov ax,jour stosw ; inscrit le jour dans message mov al,"/" stosb ; inscrit "/" dans message mov ax,mois stosw ; inscrit le mois dans message mov al,"/" stosb ; inscrit "/" dans message mov ax,siecle stosw ; inscrit le siècle dans message mov ax,annee stosw ; inscrit l'annee dans message mov al,"$" stosb ; signe pour la fin de la chaine xor ax,ax xor dx,dx mov dx,offset messagedate mov ah,09h int 21h ; affichage de la chaine date pop di pop es pop dx pop bx ret date endp heure proc near push bx push dx push es push di mov dx,offset message2 mov ah,09h int 21h ; affiche le message d'invite mov ah,2 int 1ah ; Lecture de l'horloge temps réel BIOS mov al,ch ; ch = Heures (numérique) div byte ptr [dix] or ax,3030h mov hh,ax ; ax contient maintenant la chaine représentant l'heure xor ax,ax mov al,cl div byte ptr [dix] or ax,3030h mov mm,ax xor ax,ax mov al,dh div byte ptr [dix] or ax,3030h mov sec,ax xor ax,ax xor cx,cx xor dx,dx ; initialisation de es et di pour l'insctruction sto ( copie de l'accu dans [es:di] ) mov di,offset messageheure mov ax,@data mov es,ax mov ax,hh stosw mov al,":" stosb mov ax,mm stosw mov al,":" stosb mov ax,sec stosw mov al,"$" stosb xor ax,ax xor dx,dx xor cx,cx mov dx,offset messageheure mov ah,09h int 21h pop di pop es pop dx pop bx ret heure endp end