home *** CD-ROM | disk | FTP | other *** search
/ 8051 Assembly Language Programming / easm51.iso / MCS51.HLP < prev   
Encoding:
Text File  |  1991-09-05  |  12.0 KB  |  442 lines

  1. Les menus déroulants :
  2.   
  3.     Choisisez une fonction avec les touches du
  4.   curseur et validez avec ENTER ou F10.
  5.     Utilisez Esc pour sortir d'un menu ou de 
  6.   l'éditeur.
  7.  
  8. L'éditeur : 
  9.  
  10.     Pour obtenir une aide sur cet éditeur : F1;
  11.     pour le quitter : F10 ou Esc.
  12.  
  13. L'assemblage :    peut être interrompu à tout
  14.         moment en pressant les touches
  15.         CTRL et break.
  16.   
  17. Description de la syntaxe :
  18.   
  19.     Tous les mnémoniques 8031/8051 Intel sont 
  20.   disponibles en minuscules ou majuscules. Les
  21.   lignes ne doivent pas être numérotés.
  22.   
  23.   Les labels : 
  24.   
  25.     Commencent par une lettre alphabétique ou
  26.   par un blanc souligné (_) suivi
  27.   d'un nombre quelconque de caractères
  28.   alphanumériques ou de blancs soulignés.
  29.     Ils peuvent aussi être suivis d'un caractère
  30.   ':'. 
  31.     Tous les caractères sont significatifs 
  32.   et les majuscules et minuscules sont
  33.   différenciées.
  34.  
  35. Les symboles prédéfinis de la famille MCS-51 :
  36.  
  37. Un certain nombre de symboles sont prédéfinis 
  38. (adresses de ports ou registres de fonctions 
  39. spéciales en RAM et accessibles uniquement en mode
  40. d'adressage direct) et utilisables uniquement
  41. en cas de mode d'adressage direct. 
  42. Ces symboles ne peuvent être redéfinis et toute
  43. tentative dans ce sens produira une erreur.  
  44. Voici la liste complète de ces symboles et leurs
  45. valeurs :  
  46.  
  47. Pour les 8031/51 : 
  48. ACC = 0E0H, B    = 0F0H, DPH = 83H,  DPL = 82H,
  49. IE  = 0A8H, IP   = 0B8H, P0  = 80H,  P1  = 90H,
  50. P2  = 0A0H, P3   = 0B0H, PCON= 87H,  PSW = 0D0H,
  51. SBUF= 99H,  SCON = 98H,  SP  = 81H,  TCON= 88H,
  52. TH0 = 8CH,  TH1  = 8DH,  TL0 = 8AH,  TL1 = 8BH,
  53. TMOD= 89H   
  54.  
  55. Pour les 8032/52 
  56. (après une instruction MODEL 8032 ou 8052) : 
  57. Tous les symboles des 8031/51 avec en supplément : 
  58. RCAP2H  =  0CBH,  RCAP2L  =  0CAH, 
  59. T2CON  =  0C8H,  TH2  =  0CDH,  TL2  =  CCH
  60.  
  61. Pour les 80154/83154 
  62. (après une instruction MODEL 80154 ou 83154) : 
  63. Tous les symboles des 8032/52 avec en supplément : 
  64. IOCON  =  0F8H  
  65.  
  66. Pour les 80515/535 
  67. (après une instruction MODEL 80515 ou 80535) 
  68. Tous les symboles des 8032/52 
  69. sauf IE, IP, RCAP2H et RCAP2L 
  70. avec en supplément : 
  71. ADCON = 0D8H, ADDAT = 0D9H, CCEN = 0C1H, CCH1 = 0C3H, 
  72. CCH2  = 0C5H, CCH3  = 0C7H, CCL1 = 0C2H, CCL2 = 0C4H,
  73. CCL3  = 0C6H, CRCH  = 0CBH, CRCL = 0CAH, DAPR = 0DAH,
  74. IEN0  = 0A8H, IEN1  = 0B8H, IP0  = 0A9H, IP1  = 0B9H,
  75. IRCON = 0C0H, P4    = 0E8H, P5   = 0F8H 
  76.  
  77. Pour les autres : doc en préparation...
  78.  
  79.  
  80. Les expressions d'adresses de bits  : 
  81.  
  82. Les adresses de bits que l'on doit donner à 
  83. certaines instructions peuvent être :  
  84. - une expression numérique dont la valeur doit être 
  85. comprise entre 0 et 127 (255 si pas de controle des
  86. SFRs) ou encore une adresse d'un port ou d'un bit 
  87. utilisateur F0 ou F1; 
  88. c'est cette valeur qui sera prise telle quelle 
  89. comme adresse de bit. 
  90. - une expression donnant l'adresse directe de 
  91. l'octet concerné (qui doit être adressable par bits 
  92. et non incluse dans la zone des SFRs sauf si port 
  93. ou si pas de controle des SFRs) ou le symbole d'un 
  94. SFR suivi d'un point et d'une autre expression 
  95. comprise entre 0 et 7 donnant le numéro du bit à 
  96. adresser.
  97. Exemple : pour adresser le bit numéro 5 du port P0 
  98. donnez l'expression P0.5 
  99. - un symbole d'un bit prédéfini; 
  100. voici la liste des symboles de bits prédéfinis qui 
  101. ne peuvent être utilisés que dans les expressions 
  102. d'adresses de bits :   
  103.  
  104. Symboles d'adresses de bits utilisables sur les 8031/51 : 
  105. IT0  =  88H,  IE0  =  89H,  IT1  =  8AH,  IE1  =  8BH,  
  106. TR0  =  8CH,  TF0  =  8DH,  TR1  =  8EH,  TF1  =  8FH,
  107. RI   =  98H,  TI   =  99H,  RB8  =  9AH,  TB8  =  9BH,
  108. REN  =  9CH,  SM2  =  9DH,  SM1  =  9EH,  SM0  =  9FH,
  109. EX0  =  0A8H, ET0  =  0A9H, EX1  =  0AAH, ET1  =  0ABH,
  110. ES   =  0ACH, EA   =  0AFH, PX0  =  0B8H, PT0  =  0B9H,
  111. PX1  =  0BAH, PT1  =  0BBH, PS   =  0BCH, P    =  0D0H,
  112. F1   =  0D1H, OV   =  0D2H, RS0  =  0D3H, RS1  =  0D4H,
  113. F0   =  0D5H, AC   =  0D6H, CY   =  0D7H
  114.  
  115. Et pour les 8032/52 
  116. (après une instruction MODEL 8032 ou 8052) : 
  117. comme les 8031/51 avec en supplément : 
  118. ET2  =  0ADH, PT2  =  0BDH, CPRL2=  0C8H, CT2  =  0C9H, 
  119. TR2  =  0CAH, EXEN2=  0CBH, TCLK =  0CCH, RCLK =  0CDH,
  120. EXF2 =  0CEH, TF2  =  0CFH  
  121.  
  122. Pour les 80154/803154 
  123. (après une instruction MODEL 80154 ou 83154) :  
  124. comme les 8032/52 avec en supplément : 
  125. PCT  =  0BFH, ALF  =  0F8H, P1HZ =  0F9H, P2HZ =  0FAH,
  126. P3HZ =  0FBH, IZC  =  0FCH, SERR =  0FDH, T32  =  0FEH,
  127. WDT  =  0FFH
  128.  
  129. Pour les 80515/535 
  130. (après une instruction MODEL 80515 ou 80535) : 
  131. comme pour les 8032/52 avec en supplément : 
  132. WDT  =  0AEH, EAL  =  0AFH, EADC =  0B8H, EX2  =  0B9H,
  133. EX3  =  0BAH, EX4  =  0BBH, EX5  =  0BCH, EX6  =  0BDH,
  134. SWDT =  0BEH, IADC =  0C0H, IEX2 =  0C1H, IEX3 =  0C2H,
  135. IEX4 =  0C3H, IEX5 =  0C4H, IEX6 =  0C5H, T2I0 =  0C8H,
  136. T2I1 =  0C9H, T2CM =  0CAH, T2R0 =  0CBH, T2R1 =  0CCH,
  137. I2FR =  0CDH, I3FR =  0CEH, T2PS =  0CFH, MX0  =  0D8H,
  138. MX1  =  0D9H, MX2  =  0DAH, ADM  =  0DBH, BSY  =  0DCH,
  139. CLK  =  0DEH, BD   =  0DFH 
  140. et avec les modifications
  141. EXEN2=  0BFH, TF2  =  0C6H, EXF2 =  0C7H 
  142. et sans    EA, PX0, PT0, PX1, PT1, PS, PT2, CPRL2, 
  143.     CT2, TR2, TCLK et RCLK.
  144.  
  145. Pour les autres : doc en préparation...
  146.  
  147. exemples : 
  148.     
  149.     mov    c, ov    ; charge le bit overflow
  150.             ; dans la carry
  151.     mov    P0.1,c    ; charge le bit 1 de p0
  152.             ; avec la carry
  153.     jnb    3, $    ; boucle tant que le bit
  154.             ; dont l'adresse est 3
  155.             ; est à 0
  156.     setb    20H.3    ; met le bit 3 de 
  157.             ; l'adresse 20H à 1
  158.      
  159.   Les constantes :    
  160.             
  161.     nombres décimaux :         12, 12d, 12D
  162.     nombres hexadécimaux :     12h, 12H, 0bH, 0Bh
  163.     nombres binaires :         1010b, 10101111B
  164.  
  165.     caractères ascii :             'd'
  166.  
  167.   L'identificateur $ est égal à la valeur courante
  168.   du PC c'est à dire l'adresse de l'instruction en
  169.   cours. Pour changer sa valeur il faut utiliser
  170.   la directive ORG (décrite plus loin).
  171.  
  172.   Les opérateurs :
  173.  
  174.   Par ordre de prioritée :    -, + (unaires)
  175.                       *, /, MOD, SHR, SHL
  176.                       +, -
  177.                       NOT
  178.                       AND
  179.                       OR, XOR
  180.                       LOW, HIGH
  181.   
  182.   Les expressions : peuvent être soit une
  183.               constante, un label
  184.       (y compris $), une expression entre
  185.       parenthèse ou une combinaison d'expressions
  186.       et d'opérateurs. Toutes les adresses et
  187.       données figurant dans une instruction
  188.       sont en fait des expressions.
  189.  
  190.   Les directives d'assemblage ou
  191.   pseudo-instructions :
  192.  
  193. ORG <expression> : Cette instruction initialise
  194.              le compteur de programme
  195.     (registre PC) à la valeur de l'expression
  196.     qui la suit. Ne doit pas être précédé d'un
  197.     label. Peut être utilisé autant de fois que
  198.     nécessaire par le même programme. Par
  199.     defaut,le PC est automatiquement initialisé
  200.     à 0. La valeur de l'expression doit être 
  201.     définie dès la première  passe.
  202.  
  203. <label>   EQU    <expression> : Cette directive
  204.                 donne une valeur 
  205.     non modifiable par la suite à un label.
  206.     La valeur de l'expression doit être définie
  207.     dès la première passe.
  208.  
  209. [<label>] DEFB    <expression>[,...] ou bien
  210. [<label>] DB    <expression>[,<expression>,...]
  211.         initialise le contenu d'un ou
  212.     plusieurs octets avec les données
  213.     spécifiés.
  214.  
  215. [<label>] DEFS    <expression> ou bien
  216. [<label>] DS    <expression> :     incrémente le
  217.                 compteur de
  218.     programme ou PC de la valeur de
  219.     l'expression donnée, cela permet par
  220.     exemple de reserver une zone mémoire pour
  221.     le stockage de données. La valeur de 
  222.     l'expression doit être définie dès la 
  223.     première passe.
  224.     
  225. [<label>] DEFM    "<chaine>" ou bien
  226. [<label>] DM    "<chaine>" : initialise le contenu
  227.                  de la mémoire à
  228.     l'adresse du compteur de programme avec
  229.     les valeurs ascii des caractères de la
  230.     chaîne donnée.
  231.  
  232. [<label>] END    : indique la fin du programme
  233.           à assembler (obligatoire sinon
  234.     une erreur est déclenchée). Stoppe
  235.     immédiatement l'assemblage;
  236.     s'il y a du texte après cette directive,
  237.     il sera ignoré.
  238.  
  239. [<label>] MODEL    31|32|51|52|053|054|154|410|451|
  240.         515|528|535|550|552|562|592|652|
  241.         654|751|752|851 : 
  242. (le symbole | signifie ou bien) 
  243. Indique à l'assembleur l'ensemble des symboles
  244. d'adresses de registres de fonctions spéciales
  245. (SFR) utilisables ainsi que les symboles d'adresses
  246. de bits en fonction du microcontrôleur cible (liste
  247. des symboles plus haut). Par défaut, le model actif 
  248. est le 8031/51 au début de chaque assemblage.
  249. Lors de l'adresse en mode direct d'un de ces
  250. registres, aucun controle d'adresse n'est effectué
  251. et c'est à l'utilisateur de s'assurer qu'il s'agit
  252. d'une adresse valide en fonction du microcontroleur
  253. cible. Important : notez que les registres de 
  254. fonctions spéciales (SFR) sont accessibles 
  255. uniquement en mode d'adressage direct.
  256. En fait, il est préférable et plus logique
  257. d'utiliser seulement une fois cette instruction en
  258. début de programme.
  259.  
  260. [<label>] SFR    : active certains controles 
  261.           concernant les registres SFRs
  262. situés dans la zone d'adresses directes 128 à 255.
  263. Quand actif, les SFRs de cette zone ne peuvent
  264. être accédés que par leurs symboles (sauf pour les
  265. ports et les bits utilisateurs F0 et F1).
  266.  
  267. [<label>] NOSFR : désactive le controle des SFRs,
  268.           dans ce cas, on peut utiliser
  269. n'importe quelle expression numérique pour
  270. acceder en adressage direct à la zone des SFRs,
  271. adresses 128 à 255.
  272.  
  273. #INCLUDE : SYNTAXE :
  274.  
  275. #INCLUDE<séparateur>"<nomdefichier>"[<remarque>]
  276. Inclus un fichier dans le source. Cette directive 
  277. ne doit pas se trouver dans un fichier déjà inclus. 
  278. Ce fichier est chargé en mémoire uniquement le 
  279. temps d'être assemblé. Cela permet en découpant un 
  280. programme en plusieurs parties inclues d'assembler 
  281. un programme de très grande taille sans pour cela 
  282. augmenter la quantitée de mémoire utilisée.
  283.  
  284.     Assemblage conditionnel :
  285.  
  286. #IF : SYNTAXE : 
  287.  
  288. #IF <séparateur><expression test>
  289. [<instructions>]
  290. #ENDIF ou bien 
  291.  
  292. #IF<séparateur><expression test>
  293. [<instructions>]
  294. #ELSE
  295. [<instructions>]
  296. #ENDIF
  297.  
  298. où <expression test> peut être :
  299. <expression> ou
  300. <expression> EQ <expression>     
  301. <expression> NE <expression>     
  302. <expression> LT <expression>
  303. <expression> LE <expression>
  304. <expression> GT <expression>     
  305. <expression> GE <expression>     
  306.  
  307. Si le résultat du test ou de l'expression est vrai 
  308. ou différent de zéro alors les instructions qui 
  309. suivent #IF seront assemblées sinon elles sont 
  310. ignorées et seules les instructions suivant le 
  311. #ELSE (s'il y en a un) seront assemblées.
  312. Les directives #IF peuvent s'emboîter les unes dans 
  313. les autres.
  314.     
  315. Commentaires :    Ils doivent être précédés d'un
  316.         point-virgule.
  317.  
  318. Rappel des mnémoniques du 8031/8051 :
  319.  
  320. Rn    =    registre R0 à R7
  321. Ri    =    registre R0 ou R1
  322. dir    =    adresse directe (0..255)
  323. bitdir    =    adresse de bit directe
  324. data    =    donnée immédiate sur 8 bits
  325. data16    =    donnée immédiate sur 16 bits
  326. adrel    =    adresse relative ($ + -128..127)
  327. adr    =    adresse quelconque
  328. adr11    =    adresse dans la même page de 2Ko
  329.  
  330. ACALL    adr11
  331. ADD    A, Rn
  332. ADD    A, dir
  333. ADD    A, @Ri
  334. ADD    A, #data
  335. ADDC    A, Rn
  336. ADDC    A, dir
  337. ADDC    A, @Ri
  338. ADDC    A, #data
  339. AJMP    adr11
  340. ANL    A, Rn
  341. ANL    A, dir
  342. ANL    A, @Ri
  343. ANL    A, #data
  344. ANL    dir, A
  345. ANL    dir, #data
  346. ANL    C, bitdir
  347. ANL    C, /bitdir
  348. CJNE    A, dir, adrel
  349. CJNE    A, #data, adrel
  350. CJNE    Rn, #data, adrel
  351. CJNE    @Ri,#data, adrel
  352. CLR    A
  353. CLR    C
  354. CLR    bitdir
  355. CPL    A
  356. CPL    C
  357. CPL    bitdir
  358. DA    A
  359. DEC    A
  360. DEC    Rn
  361. DEC    dir
  362. DEC    @Ri
  363. DIV    AB
  364. DJNZ    Rn, adrel
  365. DJNZ    dir, adrel
  366. INC    A
  367. INC    Rn
  368. INC    dir
  369. INC    @Ri
  370. INC    DPTR
  371. JB    bitdir, adrel
  372. JBC    bitdir, adrel
  373. JC    adrel
  374. JMP    @A+DPTR
  375. JNB    bitdir, adrel
  376. JNC    adrel
  377. JNZ    adrel
  378. JZ    adrel
  379. LCALL    adr
  380. LJMP    adr
  381. MOV    A, Rn
  382. MOV    A, dir
  383. MOV    A, @Ri
  384. MOV    A, #data
  385. MOV    Rn, A
  386. MOV    Rn, dir
  387. MOV    Rn, #data
  388. MOV    dir, A
  389. MOV    dir, Rn
  390. MOV    dir, dir
  391. MOV    dir, @Ri
  392. MOV    dir, #data
  393. MOV    @Ri, A
  394. MOV    @Ri, dir
  395. MOV    @Ri, #data
  396. MOV    C, bitdir
  397. MOV    bitdir, C
  398. MOV    DPTR, #data16
  399. MOV    A, @A+DPTR
  400. MOVC    A, @A+PC
  401. MOVX    A, @Ri
  402. MOVX    A, @DPTR
  403. MOVX    @Ri, A
  404. MOVX    @DPTR, A
  405. MUL    AB
  406. NOP
  407. ORL    A, Rn
  408. ORL    A, dir
  409. ORL    A, @Ri
  410. ORL    A, #data
  411. ORL    dir, A
  412. ORL    dir, #data
  413. ORL    C, bitdir
  414. ORL    C, /bitdir
  415. POP    dir
  416. PUSH    dir
  417. RET
  418. RETI
  419. RL    A
  420. RLC    A
  421. RR    A
  422. RRC    A
  423. SETB    C
  424. SETB    bitdir
  425. SJMP    adrel
  426. SUBB    A, Rn
  427. SUBB    A, dir
  428. SUBB    A, @Ri
  429. SUBB    A, #data
  430. SWAP    A
  431. XCH    A, Rn
  432. XCH    A, dir
  433. XCH    A, @Ri
  434. XCHD    A, @Ri
  435. XRL    A, Rn
  436. XRL    A, dir
  437. XRL    A, @Ri
  438. XRL    A, #data
  439. XRL    dir, A
  440. XRL    dir, #data
  441.  
  442.     *** fin du texte d'aide ***