U

USR

<fieldset class="formatter-container formatter-fieldset" style=""><legend>USR</legend><div class="formatter-content">Cette fonction appelle la routine en langage machine déclarée par l'instruction DEFUSR et renvoie ce qui est entre parenthèse.

Syntaxe
USR[numéro de routine] (constante / variable numérique / variable alphanumérique)


Lors de l'appel de la routine, le registre A du CPU contient le type de la variable ou constante mise entre parenthèse. Ceci permet de créer votre propre fonction. Il y a quatre type de valeur possible.

2 = chiffre entier.
3 = chaine de caractères.
4 = chiffre de simple précision.
8 = un chiffre de double précision.

Lorsqu'il s'agit d'une valeur numérique, le registre HL indique l'emplacement de cette variable ou constante dont le format varie en fonction du type de valeur.

Entier :
Adresse contenue dans HL : Inutilisé
Adresse contenue dans HL + 1 : Inutilisé
Adresse contenue dans HL + 2 : 8 bits de poids faible de la valeur
Adresse contenue dans HL + 3 : 8 bits de poids fort de la valeur

Simple précision :
Adresse contenue dans HL : Valeur au format simple précision (sur 4 octets)

Double précision :
Adresse contenue dans HL : Valeur au format double précision (sur 8 octets)


Lorsqu'il s'agit d'une chaine de caractères, le pointeur se trouve dans DE au lieu de HL.
Adresse contenue dans DE : Longueur de la chaine
Adresse contenue dans DE+1 : Adresse où se trouve la chaine


Exemple :
Faire une routine qui qui transforme tous les caractères majuscules en minuscules dans une chaîne alphanumérique.
Code TEXT :
        ORG 0C000H
;
        CP 3
        RET NZ        ; Retour au Basic si ce n'est pas une chaine
;
        LD A,(DE)    ; Longueur de la chaine
        OR A
        RET Z        ; Retour au Basic si longueur = 0
 
        LD B,A        ; Nombre de caractères dans B pour DJNZ
CONVC:        INC DE
        LD A,(DE)    ; Prend un caractère dans la chaine
        CP 041H
        JR C,NOCHAR    ; Si A < 041H, ce n'est pas une majuscule
        CP 05AH
        JR NC,NOCHAR    ; Si A > 064H, ce n'est pas une majuscule
        OR 020H        ; Convertie la majuscule en minuscule
        LD (DE),A    ; Place le caractère dans la chaine
NOCHAR:        DJNZ CONVC
        RET        ; retour au Basic


Après avoir tapé, assemblé et sauvegardé en binaire cette routine, entrez le programme Basic suivant et faites RUN :
Code TEXT :
10 CLS
20 CLEAR 200,&HC000
30 BLOAD”Routine.bin”:DEFUSR=&HC000
40 A$="TRANSFORMATION": A$=USR(A$)
50 PRINT A$





Remarque :




</div></fieldset>
Cette page a été vue 8119 fois