Manuel Amos Professional  Sommaire  Index

Code Machine


Notez que AREG(3) à AREG(6) ne seront pas transférés à la routine. Ces registres ne peuvent pas être modifiés, car ils sont utilisés pour stocker des informations système importantes. Pour retourner des valeurs à AMOS Professional Basic, AREG et DREG peuvent être utilisés pour lire le contenu des registres d'adresse et de données après l'appel de la procédure.

La seconde méthode alternative est bien plus propre. Les valeurs sont entrées en utilisant les paramètres normaux. Comme d'habitude, une liste de paramètres est spécifiée dans la définition de la procédure, comme ceci :

X> Rem Aucun paramètre, mais prendre les infos directement depuis les valeurs AREG et DREG
   Procedure _MACHINE�
   Procedure _MACHINE1[A] : Rem Entrer un entier dans la procédure
   Procedure _MACH1NE2[A,B,C$] : Rem Obtenir deux entiers et une chaîne

Les valeurs des paramètres sont empilées dans la pile des paramètres, pointée par A3. Ces paramètres sont stockés dans l'ordre inverse, et font quatre octets de long.

_MACHINE1 récupèrera les paramètres comme ceci :

Move.l (a3)+,d0

_MACHINE2 récupèrera les paramètres comme suit :

; Récupérer la chaîne. Chaque chaîne est stockée à une adresse PAIRE,
; en commençant par la longueur de la chaîne, suivie de la chaîne elle-même

Move.l (a3)+,a2             * Adresse de la chaîne
Move.w (a2)+,d2             * Longueur de la chaîne

; A2 pointe maintenant vers le premier caractère

; Récupérer les deux entiers

Move.l (a3)+,d1             * Récupérer "B"
Move.l (a3)+,d0             * Récupérer "A"

La pile AMOS Professional fonctionne comme une pile classique, donc bien que tout ce qui est en dessous puisse être modifié, ne touchez à aucune valeur au-dessus de l'adresse de base contenue dans A3. Notez aussi que l'espace disponible pour la routine dépend du niveau de la procédure, donc si elle est appelée depuis le programme principal, environ 3k sont disponibles. Cela peut être augmenté par un appel à la commande SET STACK depuis AMOS Professional Basic.

Pour retourner des valeurs à AMOS Professional Basic, la valeur de D0 est disponible automatiquement via la fonction PARAM.

Appeler du code machine depuis une adresse ou une banque
Il existe une autre option pour appeler directement du code machine depuis une banque mémoire ou une adresse.

Retour    Suivant
14.A.13