Konštrukcia SWITCH-CASE (assembler)
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: