Supposons que nous ayons un ordinateur 64 bits adressable par mot et que nous voulions le programmer pour produire un caractère 5x7 stocké sous forme de bitmap d'image binaire (comme celui ci-dessous) vers un affichage mappé en mémoire.
Puisque nous avons 5 x 7 = 35 pixels par caractère, nous pourrions stocker un caractère en utilisant 35 bits dans un seul mot. Avec le bit le moins significatif à partir du côté gauche du mot et chaque pixel de l'image étant représenté par la n ième bit , comme indiqué ci - dessus, le nombre « 3 » ci - dessus seraient stockées dans la mémoire en tant que: 01110100010000100110000011000101110, suivi par 29 utilisé bits mis à 0.
Est-ce ainsi que les personnages étaient / sont stockés dans des ordinateurs anciens / modernes? Ou utilisent-ils plutôt un seul octet / mot par pixel?
S'ils sont stockés de cette manière, quelle serait la routine utilisée dans l'assemblage / code machine (en n'utilisant rien de plus que des instructions élémentaires telles que les opérations au niveau du bit, arithmétique et de transport de données de l'architecture du jeu d'instructions de l'ordinateur) utilisée pour convertir ces données en une image sur l'affichage ressemble à? Serait-ce quelque chose comme:
- Stockez les coordonnées d'affichage x et y du pixel actuel à mettre à jour dans un certain registre.
- Stockez les deux valeurs RVB choisies (dans ce cas 0,255,0 pour le vert et 0,0,0 pour le noir) dans deux autres registres séparés.
- Demandez à deux autres registres d'agir comme des compteurs initialisés à 5 et 7 pour garder une trace de la ligne et de la colonne actuelles de l'image rendue.
- Testez si le registre de colonne n'est pas 0. Si ce n'est pas le cas, testez si le LSB du bitmap est défini sur 1, puis ET le registre de valeur RVB respectif avec les registres de coordonnées x et y en fonction du résultat, puis MOV ce résultat au registre de sortie de l'affichage.
- Décrémentez le registre du compteur de lignes de 1, testez pour voir s'il est 0. Si tel est le cas, remettez-le à 5 et incrémentez la coordonnée y de 1 et décrémentez le compteur de colonnes de 1.
- Décalez le registre en maintenant le bitmap 1 bit vers la gauche.
- JMP à l'instruction 4.
Existe-t-il un moyen plus simple ou plus efficace de procéder? Il semble que même quelque chose d'aussi simple que de restituer un seul petit caractère de texte nécessite un assez grand nombre d'opérations et prendrait environ 200 cycles CPU.
Enfin, existe-t-il de bons livres ou ressources sur le code au niveau de la machine pour afficher des images à partir de zéro, car je n'ai pas pu en trouver car ils glissent sur ce sujet particulier ou le code est écrit dans un langage de haut niveau ou un assembleur utilisant des macros, qui "trichent" et n'expliquent pas ce qui se passe fondamentalement au niveau le plus bas.