home *** CD-ROM | disk | FTP | other *** search
/ 8051 Assembly Language Programming / easm51.iso / EASM51.DOC < prev    next >
Encoding:
Text File  |  1991-11-17  |  8.8 KB  |  287 lines

  1. EASM51.DOC
  2.  
  3. voir aussi:
  4.     EASM51.PAS  ; code source de l'assembleur
  5.     ALLOPC.A51  ; toutes les instructions du 8051
  6.     DEMO*.A51   ; fichiers de démonstration programmation
  7.     BSP*.A51    ; exemples de programmation
  8.  
  9. Mode d'emploi de l'assembleur EASM51
  10.  
  11. ---------------------------------------------------------------------
  12.  
  13. Lancement:      EASM51 [nom du fichier] [options]
  14.  
  15. Nom du fichier: Nom du fichier à "assembler" SANS EXTENSION. L'assembleur
  16.                 utilise le fichier avec l'extension .A51 comme SOURCE, le
  17.                 fichier ***.LST comme LISTING et le fichier ***.HEX comme
  18.                 listing HEXADÉCIMAL.
  19.  
  20. Options:        admissibles sont:
  21.                 -NOLIST    : sans génération de listing
  22.                 -NOHEX     : sans génération de listing hexadécimal
  23.                 -NOSYMTAB  : sans génération de tableau de symboles dans
  24.                              le listing
  25.  
  26. En cas d'erreur, l'assembleur affiche un code de sortie <>0 .
  27.  
  28. ---------------------------------------------------------------------
  29.  
  30. Fichiers:
  31.   EASM51.EXE : programme exécutable
  32.   EASM51.PAS : code source en Turbo-Pascal
  33.   EASM51.DOC : documentation
  34.  
  35. ---------------------------------------------------------------------
  36.  
  37. Format de lignes de programmation
  38.  
  39. En règle générale, une ligne de programmation se compose de 3 parties:
  40.  
  41.             LABEL          INSTRUCTION       COMMENTAIRE
  42.  
  43. Si le premier caractère d'une ligne est l'un des caractères A à Z, voire a à z,
  44. le premier symbole de la ligne sera considéré comme un LABEL.
  45. Un LABEL peut se terminer avec un double point (":"); ceci n'est pourtant pas
  46. obligatoire. Un LABEL a une longueur maximale de 8 caractères et l'on peut
  47. utiliser le signe de soulignement ("_"). L'assembleur fait la distinction
  48. entre les majuscules et les minuscules !!
  49.  
  50. Si le premier caractère d'une ligne est un espace (un blanc) l'assembleur
  51. n'attend pas de LABEL et continue:
  52.  
  53. La partie suivante de la ligne sera interprétée comme instruction (pseudo-
  54. assembleur ou machine).
  55.  
  56. Si l'assembleur rencontre, à n'importe quel endroit, un point-virgule (";"),
  57. le reste de la ligne sera interprété comme commentaire.
  58.  
  59. Exemples:
  60.  
  61. *********************************************************************
  62. ;
  63. ; 10 lignes de programmation d'exemple pour l'assembleur EASM51
  64. ;
  65.          ORG 0000H      ; adresse de lancement
  66. START    NOP            ; commentaire
  67.          NOP
  68.          MOV    A,#2    ; chargement d'une constante
  69. ENCORE   LJMP   START   ; boucle
  70. ; uniquement commentaire
  71. ;
  72. **********************************************************************
  73. fichier d'exemple DEMO2.A51:
  74. **********************************************************************
  75.  
  76. ;       DEMO2.A51
  77. ;
  78.         ORG   1000H
  79. START   MOV   A,R0
  80.         RET
  81. TEXT    DB    '1234',0
  82. ;
  83.         END
  84. *********************************************************************
  85.  
  86. Les différentes parties d'une ligne peuvent commencer dans n'importe
  87. quelle colonne.
  88.  
  89. ---------------------------------------------------------------------
  90.  
  91. Instructions de commande de l'assembleur ( Pseudo-Opcodes ):
  92.  
  93.        ORG    expr
  94.        DB     expr,expr,expr ...
  95.        DS     expr
  96. Label  EQU    expr
  97.        END
  98.  
  99. L'assembleur fait appel à un compteur d'emplacements interne qui mémorise
  100. où, dans la mémoire (de programme), l'octet suivant doit être stocké.
  101.  
  102. L'instruction
  103.  
  104.        ORG    expr
  105.  
  106. attribue au compteur d'emplacements la valeur de l'expression arithmétique
  107. expr.
  108. Cette instruction est utilisée pour positionner le programme à un endroit
  109. bien défini de la mémoire. (ORG: ORIGIN)
  110.  
  111.  
  112. L'instruction
  113.  
  114.        DS     expr
  115.  
  116. se traduit par une augmentation du compteur d'emplacements de la valeur de
  117. l'expression arithmétique expr. et peut être utilisée aussi pour gérer la RAM
  118. interne. (DS: DEFINE STORAGE)
  119.  
  120.  
  121. L'instruction
  122.  
  123.        DB     expr,expr,....
  124.  
  125. dépose, sous la forme d'octets, les valeurs des expressions arithmétiques
  126. dans la mémoire de programme et augmente la valeur du compteur d'emplacement
  127. autant que cela est nécessaire. On peut utiliser également des constantes
  128. de texte. (DB: DEFINE BYTE)
  129.  
  130.  
  131. L'instruction
  132.  
  133. Label  EQU    expr
  134.  
  135. Attribue au LABEL la valeur de l'expression arithmétique expr.
  136. (EQU: EQUATE)
  137.  
  138.  
  139. L'instruction
  140.  
  141.        END
  142.  
  143. caractérise la fin du fichier.
  144.  
  145. ---------------------------------------------------------------------
  146.  
  147. Représentation de constantes numériques et de texte:
  148.  
  149. CONSTANTES NUMÉRIQUES:
  150.  
  151. Nombres décimaux:       représentation normale
  152. Nombres hexadécimaux:   pour pouvoir les distinguer de LABEL, ces chiffres
  153.                         se caractérisent par le H à leur fin et doivent
  154.                         commencer avec un signe de 0 à 9.
  155. Nombres binaires:       se caractérisent par le B à leur fin.
  156. Constante de caractère: un caractère délimité par des apostrophes
  157. Constante de texte:     une chaîne de caractères délimitée par des apostrophes
  158.                         (ne peut être utilisée qu'avec l'instruction DB)
  159.  
  160. Exemples:
  161. Nombres décimaux        0   00001   12324
  162. Nombres hexadécimaux    0H  1H      0ABCDH    01000H   0C000H
  163. Nombres binaires        1B  10B     11111010B
  164. Constantes de caractère 'A'  '0'    'x'
  165. Constantes de texte     'XYZ'       '0123456789H'      'Un texte'
  166.  
  167. ---------------------------------------------------------------------
  168. Expressions arithmétiques:
  169.  
  170. Constantes numériques    et
  171. constantes de caractère  sont des expressions arithmétiques.
  172. LABEL                    sont des expressions arithmétiques.
  173. $                        est une expression arithmétique,
  174.                          VAL =  VALeur du compteur d'emplacements
  175.  
  176. Étant donné que expr1 et expr2 sont des expressions arithmétiques,
  177. les expressions suivantes le sont également:
  178.  
  179. -expr1         ; constitution de la valeur négative
  180. expr1 + expr2  ; somme
  181. expr1 - expr2  ; différence
  182. expr1 * expr2  ; produit
  183. expr1 / expr2  ; nombre entier du quotient
  184.  
  185. ---------------------------------------------------------------------
  186. LISTING HEXADÉCIMAL
  187.  
  188. L'assembleur génère, comme code-objet, un fichier de texte qui prend
  189. la forme d'un LISTING HEXADÉCIMAL, dont chaque ligne a le format
  190. suivant:
  191.  
  192. n1 n2:b1 b2   .....  bn n3
  193.  
  194. n1         nombre des octets à suivre sous forme de nombre hexadécimal
  195.            à 2 chiffres
  196. n2         adresse des octets à suivre sous forme de nombre hexadécimal
  197.            à 4 chiffres
  198. b1 bis bn  les octets du code-objet, sous forme de nombre hexadécimal à
  199.            2 chiffres respectivement, séparés par des blancs
  200. n3         total de la somme des octets du code objet, sous forme de
  201.            nombre hexadécimal à 4 chiffres
  202.  
  203. Exemple (DEMO2.HEX) :
  204. 07 1000:E8 22 31 32 33 34 00 01D4
  205.  
  206. ---------------------------------------------------------------------
  207. Listing
  208. Le listing généré prend la forme suivante:
  209.  
  210. ****** LISTING of EASM51 (DEMO2) ******
  211. LINE LOC  OBJ        T        SOURCE
  212.    1 0000              ;       DEMO2.A51
  213.    2 0000              ;
  214.    3 0000                      ORG   1000H
  215.    4 1000 E8       [1] START   MOV   A,R0
  216.    5 1001 22       [2]         RET
  217.    6 1002 31 32 33     TEXTE   DB    '1234',0
  218.           34 00
  219.    7 1007              ;
  220.    8 1007                      END
  221. symboltable (2 symbols) :
  222.      START :1000      TEXTE:1002
  223.  
  224. Dans la colonne "LINE" le numéro de ligne est indiqué sous forme de nombre
  225. décimal.
  226. La colonne "LOC" (LOCation) comporte la valeur du compteur d'emplacements sous
  227. forme de nombre hexadécimal à 4 chiffres.
  228. La colonne "OBJ" montre le code objet généré.
  229. La colonne "T" donne la durée d'exécution en cycles. Si l'on utilise un
  230. quartz de 12 MHz, un cycle a une durée de 1 microseconde.
  231. La colonne "SOURCE" comporte le code source du fichier.
  232.  
  233. ---------------------------------------------------------------------
  234.  
  235. Messages d'erreur de EASM51:
  236.  
  237. string length
  238.   La chaîne de caractères indiquée est trop longue.
  239.  
  240. missing or invalid term
  241.   Absence d'expression arithmétique valable.
  242.  
  243. unknown expression
  244.   Impossibilité de calcul de l'expression arithmétique.
  245.  
  246. missing expression
  247.   Il manque une expression arithmétique.
  248.  
  249. missing term
  250.   Il manque un terme arithmétique.
  251.  
  252. internal buffer overflow
  253.   La ligne génère trop d'octets OPCODE.
  254.  
  255. range error
  256.   L'expression arithmétique ne peut pas être comprise dans l'octet.
  257.  
  258. syntax
  259.   Erreur de SYNTAXE.
  260.  
  261. unknown address
  262.   L'adresse indiquée est inconnue.
  263.  
  264. relative jump range
  265.   Saut trop éloigné.
  266.  
  267. far jump range
  268.   Saut trop éloigné.
  269.  
  270. base value not bit addressable
  271.   Valeur ne peut pas être adressée par bit.
  272.  
  273. unknown opcode
  274.   Instruction inconnue.
  275.  
  276. invalid expression
  277.   Expression arithmétique invalide.
  278.  
  279. missing label
  280.   Il manque un LABEL (étiquette).
  281.  
  282. double defined label
  283.   Double définition du même LABEL (étiquette).
  284.  
  285. invalid line
  286.   FIN de ligne invalide.
  287. --------------------------------------------------------------------------