Résultats de 1 à 5 sur 5

Sujet : Afficher l'heure en gros caractère ASM

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    1

    Afficher l'heure en gros caractère ASM

    Bonjour,

    Je suis un apprenti informaticien de 2ème année et je dois faire un projet qui affiche l\'heure en gros caractère. Pour celâ j\'arrive à afficher l\'heure mais pas en gros caractère... J\'aimerais créer une procédure qui me prenne heure, minute, seconde et qui me fasse un affichement 7 segment avec des étoiles. Comment faire???

    Merci d\'avance

  2. #2
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    Il faut consulter les tuts de ICZELION traduit en français par MORGATTE (Voir ce site dans annuaire)
    Le TUT n° 4 explique comment dessiner dans une fenêtre
    bonne continuation
    Moby
    moby

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    18
    : Salut!
    j\'ai pas une solution à ton probleme,mais je veux que tu m\'aide à mon mini projet. :lol: .
    je veux le code source de l\'affichage de l\'heure.
    j\'ai deja posé se probleme sur le forum.
    merci. :wink:

  4. #4
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    La première question qui se pose:
    - ton programme sera t il sous l\'invite (DOS), soit directement sous WINDOWS

    En effet, sous DOS, tu travaille avec les interruptions. Il y a deux int21h qui permettent d\'obtenir la date et l\'heure. Pour agrandir les caractères, il faut passer en mode graphique et les dessiner toi même. C\'est trés gros travail, sauf si quelqu\'un l\'a déjà fait et te passe les routines.

    Par contre, si tu travaille sous Windows, il faut utiliser les API.

    Avec les Api: il y a des api qui permettent de récupérer la date et l\'heure et des api qui permettent d\'afficher une police de caractère avec ses dimensions. D\'une certaine manière, ce doit être plus facile que sous DOS, mais il faut d\'abord avoir apris et compris tout le méchanisme de programmation sous WINDOWS.
    moby

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    306
    En mode 16 bits le plus gros travail ne sera pas de récupérer l\'heure il suffit d\'aller lire dans les bonnes cases (me rapelle plus lesquelles), mais d\'écrire le code pour afficher en gros caractères (avec des étoiles en plus). Il faudra que tu trouve le moyen de programmer la correspondance entre les nombres de l\'heure (ceux que tu lis dans les cases) et les coordonnées précises de chaque étoile des caractères que tu vas afficher à l\'écran (0 1 2 ... 9 mais c\'est très faisable. Si l\'heure les minutes et les secondes sont chacunes codées sur un octet

    adr1 [octet heures]
    adr2 [octet minutes]
    adr3 [octet secondes]

    tu pourrais faire (attention j\'improvise ): c\'est pas optimisé):
    Code:
    %define LARGEUR_CHIFFRES 5 ;chaque chiffre fais 5 étoiles de large
    %define adr_heures    ????
    %define adr_minutes   ????
    %define adr_secondes   ????
    
    segment .text
    
    mov ax,03h
    int 10h         ;passer en mode texte 80*25
    
    boucle:
    
    ;HEURES
    xor ax,ax ;efface ax
    mov al,[adr_heures] ;lit l\'octet heures à adr1 et le met dans al
    
    mov bx,10 ; stocke divideur dans bx
    div bx        ;divise ax par bx (ah contient le reste et al le quotient)
    ;le reste est le premier chiffre des heures et le quotient le deuxième, tu n\'a plus qu\'as les afficher.
    
    xor di,di ; commence l\'affichage en haut de l\'écran
    
    call affich_ah  ;affiche le premier chiffre
    shl ax,8          ;met al dans ah en écrasant ah
    call affich_ah
    
    call afficher_2points
    
    ;MINUTES
    xor ax,ax
    mov al,[adr_minutes] ;lit l\'octet minutes à adr2 et le met dans al
    
    mov bx,10 ; stocke divideur dans bx
    div bx
    
    call affich_ah  ;affiche le premier chiffre
    shl ax,8          ;met al dans ah en écrasant ah
    call affich_al
    
    call afficher_2points
    
    ;SECONDES
    xor ax,ax
    mov al,[adr_secondes] ;lit l\'octet secondes à adr3 et le met dans ax
    
    mov bx,10 ; stocke divideur dans bx
    div bx
    call affich_ah  ;affiche le premier chiffre
    shl ax,8          ;met al dans ah en écrasant ah
    call affich_ah
    
    jmp boucle
    
    mov ax,4C00h
    int 21h
    
    ; affiche un chiffre en faisant ne sorte  que la position d\'affichage (di) ait avancé de LARGEUR_CHIFFRES étoiles plus 1 en sortie
    
    affich_ah: 
    test0:
    cmp ah,0
    jne test1
    call afficher0   ;pas le temps de m\'amuser :wink:
    test1:
    cmp ah,0
    jne test2
    call afficher1   ;idem
    test2:
    cmp ah,0
    jne test3
    call afficher2
    test3:
    cmp ah,0
    jne test4
    call afficher3
    test4:
    cmp ah,0
    jne test5
    call afficher4
    test5:
    cmp ah,0
    jne test6
    call afficher5
    test6:
    cmp ah,0
    jne test7
    call afficher6
    test7:
    cmp ah,0
    jne test8
    call afficher7
    test8:
    cmp ah,0
    jne test9
    call afficher8
    test9:
    call afficher9
    ret
    sinon au lieu de le faire en mode texte tu pourrais en mode graphique (320*200 par ex) utiliser des sprites pour chaque chiffre au lieu d\'une routine, mais il faudrait alors coder une routine pour afficher les sprites (peut-être pas plus court même si c\'est simple).

    Sinon il y a le mode protégé avec les API win32 ou peut-être deux où trois fonctions spécifiques suffiraient à afficher l\'heure en gros caractères, mais si tu débutes en assembleur je te préviens que c\'est loin d\'être plus simple. Personnellement je n\'ai pas encore trouver le temps (ni le courage:8O de m\'y pencher car comme le dit moby
    il faut d\'abord avoir apris et compris tout le méchanisme de programmation sous WINDOWS.
    et ce n\'est pas une mince affaire comparée à la simplicité de l\'assembleur 16bits qui ressemble plus à un jeu de casse brique ...

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé