REGISTRE...BINAIRE..HEXADÉCIMAL
 

Je vous ait déjà expliqué que l'assembleur repose sur la base hexadécimal.
Seulement vous pouvez utiliser dans vos prgms au choix la base décimal (base 10), la base hexadécimale (base 15) et même la base binaire (base 2).

La base hexadécimal :
Comme vous le savez déjà peut-être cette base utilise 15 chiffres pour représenter des nombres.
Il y a les chiffres de 0 à 9 et les lettres de A à F. A à la valeur 10 jusqu'à F, la valeur 15.

la base binaire :
Cette base utilise seulement deux nombres 0 et 1.

Conversion :
Pour faire les conversions, utilisez la calculatrices de windows en mode scientifique, elle est capable de traduire les nombres dans les trois bases.

Applications :
La base binaire sera surtout utilisés pour affichés des sprites à l'écran donc patience.

Dans votre programme pour déclarer un nombre, il faut mettre une lettre après ce nombre.
d ou rien pour décimal, h ou $ pour hexadécimal, % ou b pour binaire. les symboles sont placés avant le nombre et les lettres après 

Exemple:

ld hl,1011b
ld hl,22d
ld hl,$F

Les registres :

En Basic, vous aviez l'habitude de stocker des valeurs dans des variables A ou D par exemple. En assembleur, c'est dans ce que l'on appelle des registres. Il y des registres 8 bit, ce sont a, b, c, d, e, h, l, 
Ces registres 8 bit (1 bit peut contenir soit 0 soit 1) peuvent contenir au maximum 255 ou  en binaire 11111111 ou en hexa FF.
a est un registre très important, il est nommé aussi accumulateur.

Il existe des registres 16 bits, ce sont des combinaisons de registre 8 bit. Il y a af, bc, de, hl......
Pour comprendre comment marche ces registres il faut voir avec le système binaire.
Prenez le registre a avec la valeur 11011001b (soit 217d) et le registre f avec la valeur 00100011 (soit 35d), si vous accolez les valeurs de a et f en binaire vous obtenez 1101100100100011 (soit  55587).
Vous comprenez maintenant la façon de lire la valeur d'un registre 16 bit.

Il existe d'autre registre 8 ou 16 bits. Il y a PC ( stocke l'instruction qui est exécutée), SP (pointeur de pile), R (registre de rafraîchissement), IX et IY (registre d'indexement) 

  

Une application de l'hexadécimal :

Il existe une façon bien pratique d'utiliser un seul registre pour placer le curseur du texte.
(curcol) et (currow) sont respectivement pour la colonne et pour la ligne. ce sont des adresses mémoires 8 bit.
Regardez dans le fichier ti83asm.inc à la ligne de (currow). L'adresse de curcol est 800Dh soit 32781d, pour currow c'est 800Ch soit 32780d. Donc si vous chargez un registre 16 bit dans currow, les 8 autres bit seront chargés dans curcol.
C'est la même chose avec pencol.

Exemple:
    ld hl,0203h
    ld (currow),hl

Ceci met 02 dans h et 03 dans l donc 03 dans curcol et 02 dans currow.

Une autre application : la mémoire de votre calculatrice

Un petit mot sur la mémoire de votre ti83 préférée. Sur la boite de votre calculatrice, il y a marqué 32ko de ram mais vous avez peut-être déjà remarquer qu'il n'y avais qu'environ 27ko de libre pour les programmes, listes, matrices....
Rassurez-vous la calculatrice possède bien 32ko de mémoire. D'après la doc de Texas Instrument la mémoire de la machine commence à 8000h (32768d) et finit à FFFFh (65535d), si on en fait la différence alors on obtient 32767d (soit 32ko). Encore d'après la documentation une partie de cette mémoire est réservé au système de la ti de 8000h à 9327h. Faisons à nouveau une différence et on obtient 4903 (soit environ 5ko pour le système). 32767-4903 donne 27864 ce qui est bien la mémoire restante à votre disposition.

Quelques commandes sur les registres :

inc : suivit d'un registre, ajoute 1d à ce registre ( exemple : a+1-- a)

dec : suivit d'un registre, enlève 1d à ce registre

ex : permet d'échanger le contenu de hl et de : ex de,hl (ne marche pas dans l'autre sens)

sub : soustrait un registre de a (exemple sub b = a-b -- a)

add : additionne les deux registres qui suit la commande (exemple add a,b = a+b -- a)