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