Changes between Version 10 and Version 11 of doc-assembleur-pic16
- Timestamp:
- Mar 26, 2007, 1:15:21 AM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
doc-assembleur-pic16
v10 v11 511 511 == ` ` Switch case == #switchcase 512 512 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. 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 automates d'états finis particulièrement important dans la programmation en assembleur. 515 514 516 515 La forme générale du switch case est:: … … 529 528 tous les tests ne sont pas équivalent vis à vis du temps de traitement. Le premier est favorisé par rapport au dernier. 530 529 531 switch general::532 Si les valeurs constantes sont quelconques:533 530 {{{ 534 531 ; BEQ reg, CST1, goto, label_cst1 … … 572 569 sequence_cst4 573 570 goto fin 574 575 fin 576 }}} 577 578 mais pour être efficace, il est souhaitable de se contraindre dans le choix des valeurs. 571 fin 572 }}} 573 574 Pour ê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 {{{ 577 cst_A EQU 0 578 cst_B EQU 1 579 cst_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 591 label_cst_A 592 sequence_cst1 593 goto fin 594 label_cst_B 595 sequence_cst2 596 goto fin 597 label_cst_C 598 sequence_cst3 599 goto fin 600 fin 601 }}} 579 602 580 603 == ` ` Tantque condition faire == #tantque