ZuperIndex
ZINDEX
ZuperIndex
ZDICO
ZuperIndex
ZUPERINDEX
ZuperIndex

ZuperIndex
MACROS
Sous-programmes Fonction TI-92 Introduction
Fonction TI-92 Créer des sous-programmes
Fonction TI-92 Sous-programmes vs macros
Fonction TI-92 Exemple concret
Fonction TI-92 Index des sous-programmes Barre

Page précédente

Monter Descendre Retour Introduction

puce Cette partie explique non seulement comment créer des sous-programmes, tout en mettant l'accent sur leur points faibles et points forts par rapport aux macros.

Ils sont facile à réaliser et je vous conseille fortement de les utiliser.

puce Pour finir il y a l'index des sous-programmes disponibles dans le dossier 92files, je les ai écrit pour vous faciliter la tâche lors de vos premiers programmes.

Si vous les utilisez, laissez les en-têtes dans vos programmes sources.


Barre



Monter Descendre Retour Créer des sous-programmes

puce Dans un programme, vous avez sûrement constaté qu'il faut parfois écrire quelques lignes de code identiques.
En plus d'augmenter considérablement le programme source (.asm) il est fastidieux de faire un travail aussi répétitif.

puce Nous allons donc écrire une fois les lignes qui nous intéresse et par la suite nous appellerons notre sous-programme avec le mnémonique BSR autant de fois que nécessaire.
Vous pouvez faire un sous-programme avec des paramètre en utilisant la pile, mais sachez que le plus facile est de faire une macro.

puce A chaque appel du sous-programme dans notre programme, nous sauterons vers celui-ci. Par conséquent, quel que soit le nombre d'appels la taille du programme final ne changera pratiquement pas.

puce Pour définir un sous-programme c'est simple, vous devez le faire commencer par un label.
Ensuite vous tapez les instructions.
Enfin vous devez terminer votre sous-programme avec le mnémonique RTS.

puce En conclusion, un sous-programme en plus de nous éviter de taper du code vraiment inutilement, nous permet de gagner un gain de place pouvant devenir très important.


Barre



Monter Descendre Retour Sous-programmes vs macros

AVANTAGE : la taille
puce La rapidité d'un sous programme est inférieure à celle d'une macro car nous effectuons un saut vers celui-ci puis nous en effectuons un autre pour revenir ou n'en étions.
puce Une macro est 'simplement' du code recopié avec des paramètres, donc c'est directement l'instruction suivante qui est executée.

DESAVANTAGE : la vitesse
puce Comme je vous l'ai déjà fait remarqué, l'appel à une macro est remplacé par le contenu de celle-ci, par conséquent vous ne réduisez pas la taille de votre programme final (.92p).
puce L'énorme point fort des sous-programmes, c'est de nous faire gagner la place.
puce Si votre but principal était d'utiliser d'une manière simple des paramètres, tournez vous vers l'élaboration de macros.

CAS PARTICULIER : aucun paramètre
puce Paramètre ne veut pas forcément dire macro, en effet nous pouvons nous servir de la pile pour transmettre des paramètres.
Attention toutefois, vous devrez être très scrupuleux lors de l'utilisation de celle-ci car elle est aussi utilisée lors du saut vers le sous-programme pour contenir l'adresse du retour. En cas d'erreur vous avez toutes les chances pour assister à un plantage (ILLEGAL INSTRUCTION, ADDRESS ERROR).

puce Avant de sauter à votre sous-programme, vous pouvez enregistrer sur la pile des paramètres avec le mode d'adressage -(An), ici avec le registre A7.

puce Ensuite vous sautez à votre sous programme, là l'instruction BSR dépose sur la pile l'adresse du retour, il faut absolument la désempiler pour la sauvegarder quelques part (pourquoi pas dans une variable).
Maintenant que le pointeur de pile pointe sur le dernier paramètres que nous avons rentré, vous devez sortir tous les paramètres dans l'ordre inverse comme il est de coutume, encore une fois soyez attentionné sur la taille et le nombre de valeurs que vous déposez et sortez de la pile, tout ce qui a été déposé devra être sorti !

puce Enfin, il vous faut absolument empiler sur la pile l'adresse de retour sauvegardée précédemment pour retournez à votre programme avec l'instruction RTS.


Barre



Monter Descendre Retour Exemple concret

puce Prenons la fonction DrawStrXY de la bibliothèque TIOS, voici un exemple de ce qu'il faudrait écrire à chaque fois:

PROGRAMMATION

	move.w	#4,-(A7)	; dépose la couleur
	pea	hello(pc)	; dépose le pointeur de la chaîne
	move.w	#2,-(A7)	; dépose l'ordonné
	move.w	#5,-(A7)	; dépose l'abscisse
	jsr	tios::DrawStrXY	; lance la fonction
	lea	10(A7),A7	; restaure la pile de 2+4+2+2=10 octets

				; dans les données
	hello "Bonjour !",0	; une chaîne terminée par un caractère nul
puce Et si nous devions afficher 20 fois cette chaînes ou plusieurs autres dans un programme ?

SOLUTION SANS PARAMÈTRES
puce Ecrire les lignes précédentes dans un sous-programme pour y accéder autant de fois que nécessaire,
évidement, ce sous-programme ne fonctionnera que pour les valeurs données.

puce Attention, vous devez respecter scrupuleusement la casse (majuscules et minuscules) du nom des sous-programmes comme vous le faites avec les bibliothèques.

PROGRAMMATION SANS PARAMÈTRES

		; Sous-programme de la fonction tios::DrawStrXY
	WriteStr:		; label du sous-programme
	move.w	#4,-(A7)	; dépose la couleur
	pea	hello(pc)	; dépose le pointeur de la chaîne
	move.w	#2,-(A7)	; dépose l'ordonné
	move.w	#5,-(A7)	; dépose l'abscisse
	jsr	tios::DrawStrXY	; lance la fonction
	lea	10(A7),A7	; restaure la pile de 2+4+2+2=10 octets
	RTS			; instruction de retour de sous-programme

				; dans les données
	hello	dc.b "Bonjour !",0	; une chaîne terminée par un caractère nul

				; dans le programme
	BSR	WriteStr	; appel à notre sous-programme WriteStr
SOLUTION AVEC PARAMÈTRES
puce Ecrire le sous-programme qui utilisera les paramètres transmis par la pile.

Dans le programme il faudra empiler les paramètres avant chaque appel au sous-programme voulu, appeler le sous-programme et restaurer la pile ou non (selon la technique employée).

puce Attention, vous devez respecter scrupuleusement la casse (majuscules et minuscules) du nom des sous-programmes comme vous le faites avec les bibliothèques.

PROGRAMMATION AVEC PARAMÈTRES




Barre



Monter Retour Index des sous-programmes

Barre



 

 

Lisez la section sur les droits d'auteur et la licence d'utilisation avant de distribuer Zguide.

Zguide © 1998 - 1999 par Florian DREVET. Tous droits réservés