La  pile

la pile est une structure très importante en assembleur. Elle sert à stocker des valeurs qui pourront ensuite être rappelées. Sa structure est du genre "dernier entré, premier sorti" ( FILO en anglais : first in last out).

Un petit exemple : Prenez des assiettes, empilez-les, la dernière assiette que vous aurez mise sur le haut de la pile sera la première que vous enlèverez. Pour l'asm, c'est pareil mais avec des registres.
 
 

les commandes :

push : place le nbre ou le registre qui suit la commande.

pop : retire le dernier nbre placé dans la pile et le place ds le registre qui suit.

Attention, on ne peut y sauvegarder que des registres 16 bits. Les registres 8 bits ou les op ne sont pas acceptés. La pile a une taille de 400 octets donc vous pouvez stocker normalement 25 valeurs de 16 bits

Vous vous demandez sûrement à quoi ça sert. Certaines commandes en assembleur écrase un certain registre donc si vous avez besoin de sauvegarder des valeurs la pile est essentielle.

Un petit programme exemple :

......début standard......

    call _clrlcdfull
    ld de,$1245 ; soit 4677d
    ld bc,$00FF ; soit 255d
    push de ; place 255 ds la pile
    push bc ; place le registre de ds la pile
    pop hl ; retire la der val entrée ds la pile et la place ds hl
    call _disphl ; affiche hl (on reverra ça plus tard)
    call _newline ; nouvelle ligne
    pop hl
    call _disphl
    ret
.end
END

Pour placer les op dans la pile :

Attention, ces commandes ne sont pas définies dans le fichier ti83asm.inc. Il faut donc la définir dans le programme.

exemple :

.list
_nom de la commande .equ équivalent en héxa
.org 9327h

Voici maintenant les quatre commandes pour les op :

_pushop1 .equ $454A ; place op1 dans la pile
_pushop3 .equ $4542
_popop1 .equ $44E6 ; retire op1 de la pile
_popop3 .equ $44E2