Spoznali smo, da zna računalnik prepisovati podatke, jih seštevati
in opravljati druge aritmetične operacije, izvajati logične operacije.
Vsebine registrov in pomnilniških lokacij zna povečevati in
zmanjševati. Pri tem koraka po pomnilniku od programskega ukaza do
ukaza.
Ko spoznavamo skrivnosti programiranja, hitro ugotovimo, da
mora program glede na nek podatek spremeniti svoj potek. Na strojnem
nivoju to pomeni, da programski števec, to je register, ki kaže na
naslednji ukaz, v nekaterih primerih ne sme kar napredovati za eno
mesto (na naslednji ukaz), temveč mora preskočiti nekaj ukazov, bodisi
naprej ali nazaj. Vračanje nazaj (in ponovno korakanje naprej) lahko
tudi pomeni, da se program vrti v zanki.
V bistvu ni to nič posebnega. Če zna računalnik (CPE) spremeniti
vsebino registrov, zakaj ne bi znal tudi spremeniti vsebino
programskega števca (in s tem izbiro naslednjega ukaza). Poznamo več
vrst programskih skokov
Programski skoki : Dolgi (JMP),
kratki (branch),
Pogojeni skoki (bne, beq, bz..)
Skok na podprogram (JSR) in
povratek z njega (RET)
V oklepajih je navedenih nekaj tipičnih imen za take ukaze, Več o teh imenih, ko bomo obravnavali zbirni jezik.
Dolgi programski skoki so taki, da lahko od trenutnega ukaza
"preskočimo" na ukaz kjerkoli v pomnilniku. To pomeni, da mora naš ukaz
za skok nuditi dovolj bitov za kakršenkoli naslov. Zato so taki ukazi
tipično dolgi več bajtov.
Kratki skoki povedo, da se premaknemo le v okolico trenutnega ukaza
(toliko in toliko mest naprej ali nazaj. Za tak odmik pa zadošča precej
manj bitov in je tak ukaz krajši.
Pogojeni skoki se zgode, če je rezultat predhodne (na primer
aritmetične) operacije enak nič, različen od nič, pozitiven ipd. Če
pogoj ni izpolnjen, do skoka ne pride in program mirno koraka naprej po
ukazih. Spomnimo se, da CPE v posebnem (statusnem) registru pomni te
podatke.
Podprogrami
Posebna vrsta skoka je skok na podprogram. To pomeni, da trenutni
program prekinemo, kličemo ukaze v podprogramu. Ko se ti zaključijo,
nadaljujemo s prej prekinjenim programom. Tako akrobacijo je program
sposoben narediti s pomočjo dveh ukazov: skok na podprogram ( (jump to
subroutine, JSR) in povratek iz podprograma (RET, return). Računalnik
si pri tem pomaga še s skladom, kamor shrani podatek, kje je sploh
prišlo do skoka, da se zna prav vrniti.