Funkcia | Ukončuje preklad zdrojového textu |
---|---|
Syntax | end |
Popis | Slúži prekladaču ako príkaz aby ukončil preklad.
Ak sa za riadkom s touto direktívou nachádzajú ešte
nejaké ďalšie príkazy, budú ignorované.
Veľkou chybou začiatočníkov je že si myslia že
direktíva END ukončí vykonávanie programu mikropočítačom.
Pripomeniem že direktívy sú príkazy pre prekladač a
nie pre procesor. Prekladač teda na základe direktívy
END ukončí preklad zdrojového súboru. Samozrejme že toto nie je
povel pre mikropočítač aby zastal. Program v mikropočítači beží
stále pokiaľ je prítomné napájacie napätie. Zastaviť ho je možné
iba uvedením do niektorého kľudového režimu príslušným nastavením
riadiacich bitov v registri PCON. Toto sa ale v mikropočítačoch často vôbec
ani nevyužíva. Skrátka niečo také ako koniec činnosti nepripadá do úvahy.
Mikropočítač musí neustále riadiť zariadenie v ktorom sa nachádza. Inštrukcie
pred direktívou END teda musia poslať riadenie znova niekam do časti
ktorá sa neustále opakuje.
|
Príklad | zaciatok: inc p0 wait: jb p3.0,wait mov p2,#0 end ;toto je nespravne ukoncenie. Prekladac sice ukonci preklad ;ale procesor si vyberie dalsiu instrukciu ktoru najde v pameti.Otázka je či v pamäti nejaké inštrucie ešte sú. Samozrejme že nejaké čislo v pameti programu bude. Povedzme že tam zostane obsah čistej pamäte čo je číslo 0FFH. Tomu zodpovedá inštrukcia MOV R7,A. Mikropočítač teda vykoná túto inštrukciu a ide na nasledujúcu. To je zase kód 0FFH a tak ďalej. Lenže takto prebehne celú vnútornú pamäť programu a potom automaticky začne vyberať kódy inštrukcií z externej pamäte programu. Okrem iného okamžite zmení obsah brany P2 a P0. Externá pamäť programu ale neexistuje a tak sa dostane na vykonanie úplne náhodný kód inštrukcie. Výsledkom bude že program sa začne uberať svojím životom a celé zariadenie ktoré bolo riadené mikropočítačom začne nepochopiteľne vystrájať. zaciatok: inc p0 wait: jb p3.0,wait mov p2,#0 stop: jmp stop end ;toto je lepsie ukoncenie.Pred direktívou END je inštrukcia JMP ktorá pošle riadenie programu opäť sama na seba. Toto spôsobí zacyklenie programu. Teda zariadenie prestane reagovať na prípadné podnety. Ale rozhodne sa program nevymkne kontrole a zariadenie nebude vystrájať. zaciatok: inc p0 wait: jb p3.0,wait mov p2,#0 jmp zaciatok end ;toto je najlepsie ukoncenie.Tento spôsob je najlepší. Inštrukcia JMP presunie riadenie opäť na začiatok a zariadenie naďalej reaguje a samozrejme beh programu je neustále pod kontrolou. |