IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Affichage heure : Qu'est-ce que le BCD ? [FAQ]


Sujet :

Assembleur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 127
    Points : 124
    Points
    124
    Par défaut Affichage heure : Qu'est-ce que le BCD ?
    Bonjour,

    J'aimerai créer un petit programme qui affiche l'heure.
    Pour ça je veux utiliser l'interruption 02h du bios (1ah).
    Elle renvoit: ch=heures - cl=minutes - dh=secondes
    Mais tout ça en bcd.
    D'où ma question, qu'est-ce que le bcd exactement?
    Que faut-il faire de spécial pour pouvoir l'afficher car j'ai essaié en ajoutant simplement 30h puis affichage mais ça ne fonctionne pas.
    Merci d'avance pour votre aide.
    Mon blog sur Ruby on Rails : 2dconcept

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    BCD c'est Binaire codé décimal. Donc tu as eu la bonne intuition en ajouttant 30h.

    Seulement, il y a un problème. L'heure entre autre, est codée dans un registre 8 bits. Tu arrives a écrire 22 heures, avec un seul caractère ascii ? En fait, c'est plus fourbe que ca. On remarque que des chiffres on en que 10. Mais on va pas utiliser 16 bits pour coder les nombres de 0 à 9, alors que 4 suffisent. On va donc découper l'octet en deux fois quatre bits, chacun des deux parties codant un chiffre décimal. Là encore on va pas être très original :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    BCD :
     
    Binaire    Décimal
    0000         0    
    0001         1
    0010         2
    0011         3
    0100         4
    0101         5
    0110         6
    0111         7
    1000         8
    1001         9
    1010     inutilisé
    1011     inutilisé
    1100     inutilisé
    1101     inutilisé
    1110     inutilisé
    1111     inutilisé
    Ce qui donne des codages très original. Par exemple si tu as 13h dans ton registre ch, ca voudra dire... 13 heures !!

    Le but du jeu consiste à séparer ch en deux donc par ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    shr cx, 8
    shr cl, 8
    add cx, 3030h
    tu as un caractère dans ch (attention là j'ai effacé le précédent contenu de cl)

    Voilà, j'espère que j'ai pas raconté trop de conneries.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 127
    Points : 124
    Points
    124
    Par défaut
    Merci, ça marche impec.
    Plus simple, il suffit de diviser par 16.
    Mon blog sur Ruby on Rails : 2dconcept

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. est ce que c'est un bug d'affichage ?
    Par aymenet1 dans le forum Débuter
    Réponses: 2
    Dernier message: 28/02/2010, 23h17
  2. Quand est-ce que Flex a terminé l'affichage?
    Par Fr3nchK1ss dans le forum Flex
    Réponses: 6
    Dernier message: 02/02/2010, 18h01
  3. Qu'est ce que le cache ?
    Par irrou dans le forum Assembleur
    Réponses: 4
    Dernier message: 24/11/2002, 23h28
  4. Qu'est-ce que c'est que Nessus, ça fait quoi exactement ?
    Par PeterT dans le forum Développement
    Réponses: 3
    Dernier message: 24/07/2002, 11h23
  5. Réponses: 3
    Dernier message: 19/07/2002, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo