j'ai un projet a faire : un truc tout con qui affiche l'heure, mais j'ai décidé de mettre une alarme aussi.
voici le code :
heure segment 'code'
assume cs:heure, ds:heure, es:heure
org 100h
main :
;********************main menu**********************
menu:
;mode graphique
;**************
mov ah,0h
mov al,6ah
int 10h
;couleur de fond
;***************
mov ah,0bh
mov bh, 0
mov bl,0ch
int 10h
;affiche message acceuil
;***********************
mov bx, 0001h
lea dx, message0
mov cx, l_message0
mov ah, 40h
int 21h
;affiche choix date
;*******************
mov bx, 0001h
lea dx, message1
mov cx, l_message1
mov ah, 40h
int 21h
;affiche choix heure
;*******************
mov bx, 0001h
lea dx, message2
mov cx, l_message2
mov ah, 40h
int 21h
;affiche choix change heure
;**************************
mov bx, 0001h
lea dx, message3
mov cx, l_message3
mov ah, 40h
int 21h
;affiche choix change date
;*************************
mov bx, 0001h
lea dx, message4
mov cx, l_message4
mov ah, 40h
int 21h
;affiche choix saisir heure alarme
;*********************************
mov bx, 0001h
lea dx, message5
mov cx, l_message5
mov ah, 40h
int 21h
;affiche choix desactiver alarme
;*******************************
mov bx, 0001h
lea dx, message6
mov cx, l_message6
mov ah, 40h
int 21h
;affiche choix quitter
;*********************
mov bx, 0001h
lea dx, message9
mov cx, l_message9
mov ah, 40h
int 21h
;positionnement curseur
;**********************
mov ah, 2
mov dh, 18d
mov dl, 0d
int 10h
;affiche vote choix
;*********************
mov bx, 0001h
lea dx, message10
mov cx, l_message10
mov ah, 40h
int 21h
;positionnement curseur
;**********************
mov ah, 2
mov dh, 19d
mov dl, 13d
int 10h
;saisie le choix
;***************
mov ah,0ch
mov al,0ah
mov dx, offset choix
int 21h
;traitement du choix
;*******************
cmp choix+2, 31h
je date
cmp choix+2, 32h
je horloge
cmp choix+2, 33h
je changeh
cmp choix+2, 34h
je changed
cmp choix+2, 35h
je alarme
cmp choix+2, 36h
je desactiver
cmp choix+2, 37h
je fin
jmp menu
;************************heure**********************
horloge :
;efface ecran graphiquement
;**************************
mov ah,0h
mov al,6ah
int 10h
mov ah,0bh
mov bh, 0
mov bl,09h
int 10h
;vidage de buffer
;****************
mov ah, 0ch
int 21h
horloge2:
;positionnement curseur
;**********************
mov ah, 2h
mov dh, 09h
mov dl, 25h
int 10h
;affichage heure
;***************
mov ah,2
int 1ah
mov al,ch
div byte ptr [dix]
or ax,3030h
mov hh,ax
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
mov di,offset aff_heure
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 aff_heure
mov ah,09h
int 21h
;arret clavier
;*************
mov ah, 01h
int 16h
jz horloge2
mov ah, 00h
int 16h
jmp menu
;****************definir heure d'alarme***********
alarme:
;annuler ancienne heure
;**********************
mov ah,07h
int 1ah
;efface ecran graphiquement
;**************************
mov ah,0h
mov al,6ah
int 10h
mov ah,0bh
mov bh, 0
mov bl,09h
int 10h
;affiche le message saisie heure et saisie l'heure
;*************************************************
mov bx,0001h
lea dx, messageh
mov cx, l_messageh
mov ah,40h
int 21h
mov dx, offset heuresal
mov ah,0ah
int 21h
;affiche le message saisie minute et saisie les minutes
;******************************************************
mov bx,0001h
lea dx, messagemin
mov cx, l_messagemin
mov ah,40h
int 21h
mov dx, offset minuteal
mov ah,0ah
int 21h
;affiche le message saisie seconde et saisie les secondes
;********************************************************
mov bx,0001h
lea dx, messagesec
mov cx, l_messagesec
mov ah,40h
int 21h
mov dx, offset secondeal
mov ah,0ah
int 21h
;regle l'alarme
;**************
mov ah,06h
mov ch,heuresal
mov cl,minuteal
mov dh,secondeal
int 1ah
;conversion ascii-decimal
;************************
mov al, 00001111b
and heuresal+2,al
and heuresal+3,al
and minuteal+2,al
and minuteal+3,al
and secondeal+2,al
and secondeal+3,al
;positionnement curseur
;**********************
mov ah, 2h
mov dh, 09h
mov dl, 25h
int 10h
;affiche heure d'alarme regler
;*****************************
mov di,offset affalarme
mov ah,heuresal
stosw
mov al,":"
stosb
mov ah,minuteal
stosw
mov al,":"
stosb
mov ah,secondeal
stosw
mov al,"$"
stosb
mov dx,offset affalarme
mov ah,09h
int 21h
alarme2:
;arret clavier
;*************
mov ah,0ch
mov al, 07h
int 21h
cmp al,0h
jne menu
jmp alarme2
;retour
;******
; jmp menu
;****************desactiver alarme****************
desactiver:
mov ah,07h
int 1ah
jmp menu
;****************fin de programme*****************
fin: mov ah,4ch
int 21h
;*******************declaration*******************
dix db 16d
hh dw ?
mm dw ?
sec dw ?
aff_heure dw 8 ,0dh, 0ah, $
mess db 0dh,0ah, "La date : $"
message dw 10 dup (?)
siecle dw ?
annee dw ?
sec2 dw ?
jour dw ?
dix2 db 16d
message0 db 0dh,0ah,"Projet Assembleur Vulkan",0dh,0ah
l_message0 equ $-message0
message2 db 0dh,0ah,"Pour afficher l'heure, tapez 2",0dh,0ah
l_message2 equ $-message2
message5 db 0dh,0ah,"Pour activer une heure d'alarme, tapez 5",0dh,0ah
l_message5 equ $-message5
message6 db 0dh,0ah,"Pour desactiver l'alarme, tapez 6",0dh,0ah
l_message6 equ $-message6
message9 db 0dh,0ah,"Pour quitter le programme, tapez 7",0dh,0ah
l_message9 equ $-message9
message10 db 0dh,0ah,"choix:",0dh,0ah
l_message10 equ $-message10
messageh db 0dh,0ah,"Saisissez les heures",0dh,0ah
l_messageh equ $-messageh
messagemin db 0dh,0ah,"Saisissez les minutes",0dh,0ah
l_messagemin equ $-messagemin
messagesec db 0dh,0ah,"Saisissez les secondes",0dh,0ah
l_messagesec equ $-messagesec
choix db 2,?,2
heures db 3,?,3 dup (0)
minute db 3,?,3 dup (0)
seconde db 3,?,3 dup (0)
heurehex db 2,?,2 dup(?)
minutehex db 2,?,2 dup(?)
secondehex db 2,?,2 dup(?)
heuresal db 3,?,3 dup (0)
minuteal db 3,?,3 dup (0)
secondeal db 3,?,3 dup (0)
affalarme dw 8 ,0dh, 0ah, $
heure ends
end main
mais comme je suis chez moi et que je n'ai pas truc pour compiler en assembleur, j'ai aucun moyen de voir si ca marche.
quelqu'un pourrait m'aider, merci
( j'avais aussi essayer de l'afficher avec des aiguilles, d'afficher la date mais vaut mieux commencer par un truc assez simple
__________________________