Changes between Version 10 and Version 11 of doc-assembleur-pic16


Ignore:
Timestamp:
Mar 26, 2007, 1:15:21 AM (18 years ago)
Author:
Franck Wajsburt
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • doc-assembleur-pic16

    v10 v11  
    511511== ` ` Switch case == #switchcase
    512512
    513 Le switch case est un test à choix multiples. Il existe dans tous les langages évolués et permet entre autre de décrire les
    514     automates d'états finis particulièrement important dans la programmation en assembleur.
     513Le switch case est un test à choix multiples. Il existe dans tous les langages évolués et permet entre autre de décrire les automates d'états finis particulièrement important dans la programmation en assembleur.
    515514
    516515 La forme générale du switch case est::
     
    529528tous les tests ne sont pas équivalent vis à vis du temps de traitement. Le premier est favorisé par rapport au dernier.
    530529
    531  switch general::
    532    Si les valeurs constantes sont quelconques:
    533530{{{
    534531    ; BEQ reg, CST1, goto, label_cst1
     
    572569    sequence_cst4   
    573570    goto  fin
    574 
    575 fin
    576 }}}
    577 
    578 mais pour être efficace, il est souhaitable de se contraindre dans le choix des valeurs.
     571fin
     572}}}
     573
     574Pour être efficace, il est souhaitable de se contraindre dans le choix des valeurs. Le plus simple est alors de choisir les constantes consécutives à partir de 0, on peut alors faire une table de sauts.
     575
     576{{{
     577cst_A   EQU  0
     578cst_B   EQU  1
     579cst_C   EQU  2
     580    ; SWITCH reg
     581    movlw   high($+7)
     582    movwf   PCLATH
     583    movlw   $+5
     584    addwf   _reg_,w
     585    btfsc   STATUS,C
     586    incf    PCLATH,f
     587    movwf   PCL
     588    goto    label_cst_A
     589    goto    label_cst_B
     590    goto    label_cst_C
     591label_cst_A
     592    sequence_cst1   
     593    goto  fin
     594label_cst_B
     595    sequence_cst2   
     596    goto  fin
     597label_cst_C
     598    sequence_cst3   
     599    goto  fin
     600fin
     601}}}
    579602
    580603== ` ` Tantque condition faire == #tantque