Cette source permet de lire la date du bios(écrite en BCD) et l'affiche en décimal.
Le fichier 'libshow.inc' (dans le zip) contient une macro qui affiche un nombre entier stocké dans AX.
Le fichier est compilé avec TASM.
Source / Exemple :
include libshow.inc
.386
data segment use16
msg1 db 'lecture de la date',10,13,'$'
msg2 db 'erreur de lecture !',10,13,'$'
barre db ':','$'
heu db 0
min db 0
sec db 0
data ends
pile segment stack
db 256 dup(?)
pile ends
code segment use16
assume cs:code,ds:data,ss:pile
MainProc:
;initialise segment
mov ax,data
mov ds,ax
mov es,ax
push cx dx
mov ah,02h
int 1Ah
jc erreur
fonctionne:
;enregistrement des resultats
mov sec,dh
mov min,cl
mov heu,ch
lea dx,msg1
mov ah,09h
int 21h
;affiche l'heure
xor ax,ax
mov al,heu
mov cl,4
shr al,cl
ecrit_ent
mov al,heu
and al,00001111b
ecrit_ent
lea dx,barre
call affiche_string
;affiche la minute
xor ax,ax
mov al,min
mov cl,4
shr al,cl
ecrit_ent
mov al,min
and al,00001111b
ecrit_ent
lea dx,barre
call affiche_string
;affiche la seconde
xor ax,ax
mov al,sec
mov cl,4
shr al,cl
ecrit_ent
mov al,sec
and al,00001111b
ecrit_ent
pop dx cx
jmp quitter
affiche_string proc near
mov ah,09h
int 21h
ret
affiche_string endp
erreur:
lea dx,msg2
mov ah,09h
int 21h
quitter:
mov ah,4ch
int 21h
code ends
end MainProc