home *** CD-ROM | disk | FTP | other *** search
- Les menus déroulants :
-
- Choisisez une fonction avec les touches du
- curseur et validez avec ENTER ou F10.
- Utilisez Esc pour sortir d'un menu ou de
- l'éditeur.
-
- L'éditeur :
-
- Pour obtenir une aide sur cet éditeur : F1;
- pour le quitter : F10 ou Esc.
-
- L'assemblage : peut être interrompu à tout
- moment en pressant les touches
- CTRL et break.
-
- Description de la syntaxe :
-
- Tous les mnémoniques 8031/8051 Intel sont
- disponibles en minuscules ou majuscules. Les
- lignes ne doivent pas être numérotés.
-
- Les labels :
-
- Commencent par une lettre alphabétique ou
- par un blanc souligné (_) suivi
- d'un nombre quelconque de caractères
- alphanumériques ou de blancs soulignés.
- Ils peuvent aussi être suivis d'un caractère
- ':'.
- Tous les caractères sont significatifs
- et les majuscules et minuscules sont
- différenciées.
-
- Les symboles prédéfinis de la famille MCS-51 :
-
- Un certain nombre de symboles sont prédéfinis
- (adresses de ports ou registres de fonctions
- spéciales en RAM et accessibles uniquement en mode
- d'adressage direct) et utilisables uniquement
- en cas de mode d'adressage direct.
- Ces symboles ne peuvent être redéfinis et toute
- tentative dans ce sens produira une erreur.
- Voici la liste complète de ces symboles et leurs
- valeurs :
-
- Pour les 8031/51 :
- ACC = 0E0H, B = 0F0H, DPH = 83H, DPL = 82H,
- IE = 0A8H, IP = 0B8H, P0 = 80H, P1 = 90H,
- P2 = 0A0H, P3 = 0B0H, PCON= 87H, PSW = 0D0H,
- SBUF= 99H, SCON = 98H, SP = 81H, TCON= 88H,
- TH0 = 8CH, TH1 = 8DH, TL0 = 8AH, TL1 = 8BH,
- TMOD= 89H
-
- Pour les 8032/52
- (après une instruction MODEL 8032 ou 8052) :
- Tous les symboles des 8031/51 avec en supplément :
- RCAP2H = 0CBH, RCAP2L = 0CAH,
- T2CON = 0C8H, TH2 = 0CDH, TL2 = CCH
-
- Pour les 80154/83154
- (après une instruction MODEL 80154 ou 83154) :
- Tous les symboles des 8032/52 avec en supplément :
- IOCON = 0F8H
-
- Pour les 80515/535
- (après une instruction MODEL 80515 ou 80535)
- Tous les symboles des 8032/52
- sauf IE, IP, RCAP2H et RCAP2L
- avec en supplément :
- ADCON = 0D8H, ADDAT = 0D9H, CCEN = 0C1H, CCH1 = 0C3H,
- CCH2 = 0C5H, CCH3 = 0C7H, CCL1 = 0C2H, CCL2 = 0C4H,
- CCL3 = 0C6H, CRCH = 0CBH, CRCL = 0CAH, DAPR = 0DAH,
- IEN0 = 0A8H, IEN1 = 0B8H, IP0 = 0A9H, IP1 = 0B9H,
- IRCON = 0C0H, P4 = 0E8H, P5 = 0F8H
-
- Pour les autres : doc en préparation...
-
-
- Les expressions d'adresses de bits :
-
- Les adresses de bits que l'on doit donner à
- certaines instructions peuvent être :
- - une expression numérique dont la valeur doit être
- comprise entre 0 et 127 (255 si pas de controle des
- SFRs) ou encore une adresse d'un port ou d'un bit
- utilisateur F0 ou F1;
- c'est cette valeur qui sera prise telle quelle
- comme adresse de bit.
- - une expression donnant l'adresse directe de
- l'octet concerné (qui doit être adressable par bits
- et non incluse dans la zone des SFRs sauf si port
- ou si pas de controle des SFRs) ou le symbole d'un
- SFR suivi d'un point et d'une autre expression
- comprise entre 0 et 7 donnant le numéro du bit à
- adresser.
- Exemple : pour adresser le bit numéro 5 du port P0
- donnez l'expression P0.5
- - un symbole d'un bit prédéfini;
- voici la liste des symboles de bits prédéfinis qui
- ne peuvent être utilisés que dans les expressions
- d'adresses de bits :
-
- Symboles d'adresses de bits utilisables sur les 8031/51 :
- IT0 = 88H, IE0 = 89H, IT1 = 8AH, IE1 = 8BH,
- TR0 = 8CH, TF0 = 8DH, TR1 = 8EH, TF1 = 8FH,
- RI = 98H, TI = 99H, RB8 = 9AH, TB8 = 9BH,
- REN = 9CH, SM2 = 9DH, SM1 = 9EH, SM0 = 9FH,
- EX0 = 0A8H, ET0 = 0A9H, EX1 = 0AAH, ET1 = 0ABH,
- ES = 0ACH, EA = 0AFH, PX0 = 0B8H, PT0 = 0B9H,
- PX1 = 0BAH, PT1 = 0BBH, PS = 0BCH, P = 0D0H,
- F1 = 0D1H, OV = 0D2H, RS0 = 0D3H, RS1 = 0D4H,
- F0 = 0D5H, AC = 0D6H, CY = 0D7H
-
- Et pour les 8032/52
- (après une instruction MODEL 8032 ou 8052) :
- comme les 8031/51 avec en supplément :
- ET2 = 0ADH, PT2 = 0BDH, CPRL2= 0C8H, CT2 = 0C9H,
- TR2 = 0CAH, EXEN2= 0CBH, TCLK = 0CCH, RCLK = 0CDH,
- EXF2 = 0CEH, TF2 = 0CFH
-
- Pour les 80154/803154
- (après une instruction MODEL 80154 ou 83154) :
- comme les 8032/52 avec en supplément :
- PCT = 0BFH, ALF = 0F8H, P1HZ = 0F9H, P2HZ = 0FAH,
- P3HZ = 0FBH, IZC = 0FCH, SERR = 0FDH, T32 = 0FEH,
- WDT = 0FFH
-
- Pour les 80515/535
- (après une instruction MODEL 80515 ou 80535) :
- comme pour les 8032/52 avec en supplément :
- WDT = 0AEH, EAL = 0AFH, EADC = 0B8H, EX2 = 0B9H,
- EX3 = 0BAH, EX4 = 0BBH, EX5 = 0BCH, EX6 = 0BDH,
- SWDT = 0BEH, IADC = 0C0H, IEX2 = 0C1H, IEX3 = 0C2H,
- IEX4 = 0C3H, IEX5 = 0C4H, IEX6 = 0C5H, T2I0 = 0C8H,
- T2I1 = 0C9H, T2CM = 0CAH, T2R0 = 0CBH, T2R1 = 0CCH,
- I2FR = 0CDH, I3FR = 0CEH, T2PS = 0CFH, MX0 = 0D8H,
- MX1 = 0D9H, MX2 = 0DAH, ADM = 0DBH, BSY = 0DCH,
- CLK = 0DEH, BD = 0DFH
- et avec les modifications
- EXEN2= 0BFH, TF2 = 0C6H, EXF2 = 0C7H
- et sans EA, PX0, PT0, PX1, PT1, PS, PT2, CPRL2,
- CT2, TR2, TCLK et RCLK.
-
- Pour les autres : doc en préparation...
-
- exemples :
-
- mov c, ov ; charge le bit overflow
- ; dans la carry
- mov P0.1,c ; charge le bit 1 de p0
- ; avec la carry
- jnb 3, $ ; boucle tant que le bit
- ; dont l'adresse est 3
- ; est à 0
- setb 20H.3 ; met le bit 3 de
- ; l'adresse 20H à 1
-
- Les constantes :
-
- nombres décimaux : 12, 12d, 12D
- nombres hexadécimaux : 12h, 12H, 0bH, 0Bh
- nombres binaires : 1010b, 10101111B
-
- caractères ascii : 'd'
-
- L'identificateur $ est égal à la valeur courante
- du PC c'est à dire l'adresse de l'instruction en
- cours. Pour changer sa valeur il faut utiliser
- la directive ORG (décrite plus loin).
-
- Les opérateurs :
-
- Par ordre de prioritée : -, + (unaires)
- *, /, MOD, SHR, SHL
- +, -
- NOT
- AND
- OR, XOR
- LOW, HIGH
-
- Les expressions : peuvent être soit une
- constante, un label
- (y compris $), une expression entre
- parenthèse ou une combinaison d'expressions
- et d'opérateurs. Toutes les adresses et
- données figurant dans une instruction
- sont en fait des expressions.
-
- Les directives d'assemblage ou
- pseudo-instructions :
-
- ORG <expression> : Cette instruction initialise
- le compteur de programme
- (registre PC) à la valeur de l'expression
- qui la suit. Ne doit pas être précédé d'un
- label. Peut être utilisé autant de fois que
- nécessaire par le même programme. Par
- defaut,le PC est automatiquement initialisé
- à 0. La valeur de l'expression doit être
- définie dès la première passe.
-
- <label> EQU <expression> : Cette directive
- donne une valeur
- non modifiable par la suite à un label.
- La valeur de l'expression doit être définie
- dès la première passe.
-
- [<label>] DEFB <expression>[,...] ou bien
- [<label>] DB <expression>[,<expression>,...]
- initialise le contenu d'un ou
- plusieurs octets avec les données
- spécifiés.
-
- [<label>] DEFS <expression> ou bien
- [<label>] DS <expression> : incrémente le
- compteur de
- programme ou PC de la valeur de
- l'expression donnée, cela permet par
- exemple de reserver une zone mémoire pour
- le stockage de données. La valeur de
- l'expression doit être définie dès la
- première passe.
-
- [<label>] DEFM "<chaine>" ou bien
- [<label>] DM "<chaine>" : initialise le contenu
- de la mémoire à
- l'adresse du compteur de programme avec
- les valeurs ascii des caractères de la
- chaîne donnée.
-
- [<label>] END : indique la fin du programme
- à assembler (obligatoire sinon
- une erreur est déclenchée). Stoppe
- immédiatement l'assemblage;
- s'il y a du texte après cette directive,
- il sera ignoré.
-
- [<label>] MODEL 31|32|51|52|053|054|154|410|451|
- 515|528|535|550|552|562|592|652|
- 654|751|752|851 :
- (le symbole | signifie ou bien)
- Indique à l'assembleur l'ensemble des symboles
- d'adresses de registres de fonctions spéciales
- (SFR) utilisables ainsi que les symboles d'adresses
- de bits en fonction du microcontrôleur cible (liste
- des symboles plus haut). Par défaut, le model actif
- est le 8031/51 au début de chaque assemblage.
- Lors de l'adresse en mode direct d'un de ces
- registres, aucun controle d'adresse n'est effectué
- et c'est à l'utilisateur de s'assurer qu'il s'agit
- d'une adresse valide en fonction du microcontroleur
- cible. Important : notez que les registres de
- fonctions spéciales (SFR) sont accessibles
- uniquement en mode d'adressage direct.
- En fait, il est préférable et plus logique
- d'utiliser seulement une fois cette instruction en
- début de programme.
-
- [<label>] SFR : active certains controles
- concernant les registres SFRs
- situés dans la zone d'adresses directes 128 à 255.
- Quand actif, les SFRs de cette zone ne peuvent
- être accédés que par leurs symboles (sauf pour les
- ports et les bits utilisateurs F0 et F1).
-
- [<label>] NOSFR : désactive le controle des SFRs,
- dans ce cas, on peut utiliser
- n'importe quelle expression numérique pour
- acceder en adressage direct à la zone des SFRs,
- adresses 128 à 255.
-
- #INCLUDE : SYNTAXE :
-
- #INCLUDE<séparateur>"<nomdefichier>"[<remarque>]
- Inclus un fichier dans le source. Cette directive
- ne doit pas se trouver dans un fichier déjà inclus.
- Ce fichier est chargé en mémoire uniquement le
- temps d'être assemblé. Cela permet en découpant un
- programme en plusieurs parties inclues d'assembler
- un programme de très grande taille sans pour cela
- augmenter la quantitée de mémoire utilisée.
-
- Assemblage conditionnel :
-
- #IF : SYNTAXE :
-
- #IF <séparateur><expression test>
- [<instructions>]
- #ENDIF ou bien
-
- #IF<séparateur><expression test>
- [<instructions>]
- #ELSE
- [<instructions>]
- #ENDIF
-
- où <expression test> peut être :
- <expression> ou
- <expression> EQ <expression>
- <expression> NE <expression>
- <expression> LT <expression>
- <expression> LE <expression>
- <expression> GT <expression>
- <expression> GE <expression>
-
- Si le résultat du test ou de l'expression est vrai
- ou différent de zéro alors les instructions qui
- suivent #IF seront assemblées sinon elles sont
- ignorées et seules les instructions suivant le
- #ELSE (s'il y en a un) seront assemblées.
- Les directives #IF peuvent s'emboîter les unes dans
- les autres.
-
- Commentaires : Ils doivent être précédés d'un
- point-virgule.
-
- Rappel des mnémoniques du 8031/8051 :
-
- Rn = registre R0 à R7
- Ri = registre R0 ou R1
- dir = adresse directe (0..255)
- bitdir = adresse de bit directe
- data = donnée immédiate sur 8 bits
- data16 = donnée immédiate sur 16 bits
- adrel = adresse relative ($ + -128..127)
- adr = adresse quelconque
- adr11 = adresse dans la même page de 2Ko
-
- ACALL adr11
- ADD A, Rn
- ADD A, dir
- ADD A, @Ri
- ADD A, #data
- ADDC A, Rn
- ADDC A, dir
- ADDC A, @Ri
- ADDC A, #data
- AJMP adr11
- ANL A, Rn
- ANL A, dir
- ANL A, @Ri
- ANL A, #data
- ANL dir, A
- ANL dir, #data
- ANL C, bitdir
- ANL C, /bitdir
- CJNE A, dir, adrel
- CJNE A, #data, adrel
- CJNE Rn, #data, adrel
- CJNE @Ri,#data, adrel
- CLR A
- CLR C
- CLR bitdir
- CPL A
- CPL C
- CPL bitdir
- DA A
- DEC A
- DEC Rn
- DEC dir
- DEC @Ri
- DIV AB
- DJNZ Rn, adrel
- DJNZ dir, adrel
- INC A
- INC Rn
- INC dir
- INC @Ri
- INC DPTR
- JB bitdir, adrel
- JBC bitdir, adrel
- JC adrel
- JMP @A+DPTR
- JNB bitdir, adrel
- JNC adrel
- JNZ adrel
- JZ adrel
- LCALL adr
- LJMP adr
- MOV A, Rn
- MOV A, dir
- MOV A, @Ri
- MOV A, #data
- MOV Rn, A
- MOV Rn, dir
- MOV Rn, #data
- MOV dir, A
- MOV dir, Rn
- MOV dir, dir
- MOV dir, @Ri
- MOV dir, #data
- MOV @Ri, A
- MOV @Ri, dir
- MOV @Ri, #data
- MOV C, bitdir
- MOV bitdir, C
- MOV DPTR, #data16
- MOV A, @A+DPTR
- MOVC A, @A+PC
- MOVX A, @Ri
- MOVX A, @DPTR
- MOVX @Ri, A
- MOVX @DPTR, A
- MUL AB
- NOP
- ORL A, Rn
- ORL A, dir
- ORL A, @Ri
- ORL A, #data
- ORL dir, A
- ORL dir, #data
- ORL C, bitdir
- ORL C, /bitdir
- POP dir
- PUSH dir
- RET
- RETI
- RL A
- RLC A
- RR A
- RRC A
- SETB C
- SETB bitdir
- SJMP adrel
- SUBB A, Rn
- SUBB A, dir
- SUBB A, @Ri
- SUBB A, #data
- SWAP A
- XCH A, Rn
- XCH A, dir
- XCH A, @Ri
- XCHD A, @Ri
- XRL A, Rn
- XRL A, dir
- XRL A, @Ri
- XRL A, #data
- XRL dir, A
- XRL dir, #data
-
- *** fin du texte d'aide ***