![]() Tak to jsem já Moje linky Stáhněte si Assembler 86 Učebnice Instr. soubor K čemu ASM86? Delphi Síťové aplikace Ikony v liště English version |
![]() Instrukce skokuProtože si mikroprocesor vytváří frontu instrukcí, nejsou z hlediska rychlosti běhu programu skoky to pravé. Přesto bychom složitější programy bez nich asi těžko tvořili. Abychom mohli instrukce skoku používat, musíme umět vytvořit návěští. NávěštíAssembler je správně jen název překladače "Jazyka symbolických adres", který se pro něj čassem vžil. Název "Jazyk symbolických adres" vyjadřuje to, že místo adres instrukcí používáme symboly. V Turbo assembleru nejsme v názvech návěští nijak zvlášť omezováni. Ve vkládaném assembleru můžeme za název návěští použít posloupnost znaků začínající znakem @ (@1, @zacatek, @navesti). Jestliže používáme návěští, deklarované mimo vkládaný assembler (s pomocí LABEL), není přítomnost znaku @ nutná. Návěští s dvojtečkou uvedeme před instrukci, na kterou se odkazujeme. Při překladu je v místech odkazu na návěští jeho název nahrazen skutečnou adresou instrukce. Nepodmíněný skokJe to nepodmíněný skok na jiné místo programu. To musí být označené návěštím. Za instrukcí skoku je potom uveden jeho název.
Jestliže skoky používáme, hrozí vždy nebezpečí, že se program zacykluje (a nikdy neskončí). Proto je důležité si vždy rozmyslet, za jakých okolností by k této kolizi mohlo dojít. Podmíněný skokJedná se o skok podmíněný stavem jednoho nebo více, bitů registru příznaků F. Jen tímto způsobem je možné provádět v assembleru přímé větvení programu. Před instrukcí podmíněného skoku proto vždy provedeme instrukci, která použitý příznak nastaví. V případě, že není splněna podmínka skoku, pokračuje program dál, jako by se nic nedělo. Instrukce podmíněného skoku začínají vždy písmenkem J. Za ním je zkratka udávající na jakých bitech registru F je skok závislý.
Při hledání instrukce podmíněného skoku musíme myslet na to, za jakých okolností chceme skok vykonat. K tomu je také dobré si uvědomit:
Rozdíl čísel v tomto případě provedeme nejlépe instrukcí CMP. Pro tvorbu cyklu můžeme použít jeden z registrů, který si pro krokovací proměnnou vyčleníme. Jednoduchý cyklus pak vytvoříme podmíněným skokem:
Program opakuje skok dokud není v registru CL nulový výsledek. ![]() |