Accueil > Réalisations > Publications > Ouvrages > Ouvrages sur la HP48 g/gx > Voyage au centre de la HP48 g/gx - Lire le ligne en ligne

Voyage au centre de la HP48 g/gx - Lire le ligne en ligne

jeudi 14 juin 2007, par Paul Courbis

Si vous ne voulez pas télécharger l’ensemble de l’ouvrage, vous pouvez le lire en ligne ici...

Si vous désirez une version papier, un « reprint » est disponible via Amazon !

Voyage48g - page 280 - Courbis, acteur de l'Internet depuis 1988
Section précédente : Programmer en langage-machine Page précédente Sommaire Page suivante Section suivante : Avertissement

Programmer en langage-machine

(c) Courbis www.courbis.fr   Fichiers pdf disponibles sur http://www.courbis.comRedistribution/mirroring strictement interdits  Version 3.05  http:  //ww  w.co  urbis  .com  Page 274 Programmer en langage-machine Chapitre 9  * Si nous devons faire la r e'cupe'ration de la valeur au seind'un programme, il convient de r e'cupe'rer les valeurs des  registres RPL par appel  a` la routine LOAD_REG(#067D2h). Attention : ceci suppose que les registres ont e'te' sauve's par appel a` SAVE_REG (#0679Bh). Dans le cas de notre programme ceci n 'est pasne'cessaire (il est inutile de sauver les registres pour les  rappeler juste apr e`s et c 'est pourquoi nous ne coderonspas la s e'quence GOSBVL SAVE_REG GOSBVL LOAD_REG) ;  * A=DAT1 A lit 5 quartets point e's par D1 c 'est-a`-direl'adresse de l'objet au niveau 1 de la pile (notre entier) ;  * D1=D1+ 5 et D=D+1 A pour retirer l'objet de la pile ;  * Nous avons modifi e' les valeurs de D1 et D. Il convientdonc de les sauver (par appel a` SAVE_REG) ;  * Le champ A de A contient l 'adresse de l 'entier. Il fautdonc placer cette valeur dans un registre adapt e' : D1 ou  D0 (voir les chapitres 2 et 3). Nous allons utiliser parexemple D1. L'instruction a` utiliser est D1=A ;  * D1 contient l'adresse de l'objet, c'est-a`-dire l'adresse ou` ilest stocke'. Nous avons vu (chapitre 4) que l 'objet Integer  posse`de la structure suivante ;  - Son prologue sur 5 quartets ; - Sa longueur sur 5 quartets. Dans le cas d 'unentier entre' par l 'utilisateur, cette longueur est  toujours e'gale a` #15h (5 quartets pour stockerla longueur, 16 pour le contenu de l'entier) ;  - Son contenu ; Les deux premiers champs ne nous int e'ressent pas (leprologue est connu et nous supposons que sa longueur  est #15h). Il convient donc de les 'sauter'. Pour cela ilsuffit d'ajouter #Ah a` D1 (on saute 5 + 5 quartets). ceci ce fait par l 'instruction : D1=D1+ #Ah (que l'on peut aussie'crire D1=D1+ 10) ;  * D1 pointe alors sur la valeur contenue dans l'entier. Nousallons la charger en me'moire. Ceci se fait par l'instruction  suivante : A=DAT1 W (champ W car nous chargeons 16quartets en me'moire).  Ces ope'rations effectue'es, nous avons o^te' l'entier de la pile et savaleur est a` pre'sent stocke'e dans le champ W du registre A.
Section précédente : Programmer en langage-machine Page précédente Sommaire Page suivante Section suivante : Avertissement
© Courbis 1988-2010
Tous droits réservés
Permalien
Faire un don avec Paypal Le livre est entièrement gratuit mais vous pouvez
avec Paypal pour participer aux frais d'hébergement de ce site... Merci !

Messages

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Les spams donneront systématiquement lieu à dépôt de plainte. Les messages peu aimables ou comportant trop de fautes d'orthographe seront purement et simplement supprimés sans publication. Aucune obligation de publication ne pourra être opposée au webmaster, sauf éventuel droit de réponse dûment justifié.
ipv6 ready ipv6 test
Suivre ce site :
Recommander cette page :
Bookmark and Share
Traduire :