Konštrukcia SWITCH-CASE (assembler): Rozdiel medzi revíziami
(Vytvorená stránka „Kategória :Konfigurovateľné mikroprocesorové systémy Kategória :Programové konštrukcie assembleru M8C Konštrukciu SWITCH–CASE používame vtedy, keď pr…“) |
|||
| Riadok 25: | Riadok 25: | ||
LED_3_Off(); | LED_3_Off(); | ||
LED_4_Off(); | LED_4_Off(); | ||
| − | + | break ; | |
} | } | ||
Verzia zo dňa a času 12:51, 8. február 2011
Konštrukciu SWITCH–CASE používame vtedy, keď premenná môže nadobúdať viacero hodnôt a chceme, aby niektoré z nich
vykonali nejaký kód. Vo vyšších jazykoch, napríklad C je syntax:
switch (hodnota) {
case 1:
LED_1_On();
break;
case 2:
LED_2_On();
break;
case 3:
LED_3_On();
break;
case 5:
case 4:
LED_4_On();
break;
default:
LED_1_Off();
LED_2_Off();
LED_3_Off();
LED_4_Off();
break ;
}
V tomto prípade program porovnáva údaj v premennej hodnota, a ak je výsledok 1, 2, 3 alebo 4, zapne danú LED.
Nasleduje príkaz break, ktorým program vyskočí zo switch cyklu za kučeravú zátvorku. Ak by sme príkazy break
nenapísali, v prípade hodnota==2 by sa zapla LED číslo 2, 3 aj 4.
Jednotlivé CASE značky môžeme používať aj viacnásobne pre jeden kus kódu, príkladom je case 5 a case 4. Ak je
hodnota==5 alebo hodnota==4, zapne sa LD číslo 4.
Za slovom default: nasledujú príkazy, ktoré sa vykonajú, ak program nenájde CASE výraz pre danú hodnotu. V prípade assembleru opäť používame hlavne podmienené skoky, tento krát JZ a CMP porovnávanie premennej s
hodnotami. Alternatívou vyššie uvedeného programu v assembleri je tento kód:
switch1: CMP hodnota,1 JZ hodnota1 CMP hodnota,2 JZ hodnota2 CMP hodnota,3 JZ hodnota3 CMP hodnota,4 JZ hodnota4 CMP hodnota,5 JZ hodnota4 JMP switch1default hodnota1: CALL LED1on; JMP switch1koniec hodnota2: CALL LED2on; JMP switch1koniec hodnota3: CALL LED3on; JMP switch1koniec hodnota4: CALL LED4on; JMP switch1koniec switch1default: CALL LED1off; CALL LED2off; CALL LED3off; CALL LED4off; switch1koniec: