Afficher le contenu du registre
Résolu
BV91
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
BV91 Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
BV91 Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je voudrais afficher le contenu du registre à l'écran sous la forme de 4 chiffres.
Mes connaissances en C ayant pris de l'âge, j'ai écrit ces lignes-là :
Il me manque une ligne pour récupérer le contenu du registre, quelqu'un aurait uneidée sur comment faire ?
Merci par avance !
Je voudrais afficher le contenu du registre à l'écran sous la forme de 4 chiffres.
Mes connaissances en C ayant pris de l'âge, j'ai écrit ces lignes-là :
#include <stdio.h> #include <stdlib.h> int ShowReg() // Déclarer la fonction ShowReg { // <--- manque une ligne int registre = 0; printf("Contenu du registre %d", registre); return registre; }
Il me manque une ligne pour récupérer le contenu du registre, quelqu'un aurait uneidée sur comment faire ?
Merci par avance !
A voir également:
- Afficher le contenu du registre
- Registre windows - Guide
- Word a trouvé du contenu illisible - Guide
- Afficher appdata - Guide
- Fusionner deux cellules excel en gardant le contenu - Guide
- Afficher taille dossier windows - Guide
1 réponse
Salut BV91,
Si tu parles de registres du microprocesseur, le C n'est, normalement, pas fait pour cela.
De plus, ta question est très incomplète, puisque tu ne mentionnes pas de quel processeur tu parles, ni de quel registre.
A titre d'information, voilà un tableau des registres sur un processeur x86 :
https://en.wikipedia.org/wiki/File:Table_of_x86_Registers.png
Outre le processeur et le registre concerné, explique pourquoi tu veux faire cela, car cela peut nous aider à te donner une meilleure réponse.
Explique aussi ce que tu veux dire par "sous la forme de 4 chiffres", car ton code ne fait pas cela, de toutes façons.
Donne un exemple :-)
Dal
Si tu parles de registres du microprocesseur, le C n'est, normalement, pas fait pour cela.
De plus, ta question est très incomplète, puisque tu ne mentionnes pas de quel processeur tu parles, ni de quel registre.
A titre d'information, voilà un tableau des registres sur un processeur x86 :
https://en.wikipedia.org/wiki/File:Table_of_x86_Registers.png
Outre le processeur et le registre concerné, explique pourquoi tu veux faire cela, car cela peut nous aider à te donner une meilleure réponse.
Explique aussi ce que tu veux dire par "sous la forme de 4 chiffres", car ton code ne fait pas cela, de toutes façons.
Donne un exemple :-)
Dal
Oui, il s'agit du registre du microprocesseur. Pour le langage, c'est un contrainte qui vient d'en-haut ;)
Mon programme est censé modéliser un registre capable de mémoriser puis d'afficher 4 digits = 4 chiffres décimaux.
Et le soft devrait tourner éventuellement sur un micro-contrôleur ou un DSP...
J'espère que j'ai été claire ! :)
La façon dont tu accèdes à un registre donné, ou dont tu peux afficher quelque chose sur un affichage éventuellement présent va dépendre du matériel.
Sur un micro-controleur Arduino, les registres sont mappés sur des variables directement manipulables dans le programme écrit en langage arduino (proche du C), et portent des noms précis.
Pour stocker des valeurs de 0000 à 9999 sur le matériel, il te faut un registre sur 16 bits, ou deux registres de 8 bits, que tu puisses utiliser à des fins de stockage.
Si tu ne fais que "modéliser", sans savoir pour quel matériel, je ne vois pas trop l'intérêt de ce que tu dois faire, car tu vas devoir simuler le stockage d'une valeur sur un registre et simuler l'envoi de chiffres sur un affichage (à la rigueur, fais des fonctions à compléter une fois le matériel déterminé).
Quant à prendre un entier entre 0 et 9999 et retourner une chaîne de 4 caractères au maximum, avec zéros devant si nécessaire, un sprintf(chaine, "%04d", contenu_reg); suffira.
Dal
Ce qui m'embête un peu c'est l'espace mémoire du registre. Une variable de type "int" me semble gourmande en matière d'espace mémoire. Y aurait-il un autre type natif de données qui pourrait mieux accueillir mon registre ?
Dans l'ordre des types de données, le C prévoit short int, puis int.
La taille effective occupée par ces types de données dépendra du matériel utilisé. Sauf erreur, tout ce que l'on peut dire, d'après le standard, c'est qu'il seront au moins sur 16 bits (permettant de stocker des valeurs de 0 à 65535), et qu'un short int sera inférieur ou égal en taille à un int.
Il y a des chances que l'implémentation du C à utiliser pour la programmation de ces matériels retienne une taille identique, mais comme tu le vois, tu "consommes" déjà 2 octets au moins.
Si tu es à un octet près (!), tu peux toujours faire de la manipulation de bits pour sauver quelques bits de plus, mais pour stocker 9999 il te faut de toutes façons 14 bits, alors l'économie par rapport à 16 bits ne vaut certainement pas le mal que tu te donnerais à programmer cela en C.
Enfin, dans la mesure où ton entier ne sera pas signé, le type adéquat sera aussi "unsigned short int" ou "unsigned int".
Dal
Comme j'aurai besoin de 2 octets : 4 groupes de 4 bits, le 1er groupe de 4 bits sera réservé aux milliers, le 2ème groupe sera réservé aux centaines, 3ème groupe sera réservé aux dizaines et le 4ème sera réservé pour les unités.
J'ai créé donc un nouveau type "registre" de type unsigned short. Je pense que ça fera l'affaire :
Et la fonction ShowReg sera donc la suivante :