ME:MO: Zadnjič smo spregovorili o naboru inštrukcij, omenili smo mnemonike, zbirni jezik in zbirnik. Ogledali smo si na- čine naslavljanja operandov ter zapisali primer inštruk- cij enega od zbirnih jezikov. Na koncu smo zapisali še dva izredno kratka progra- ma, ki sta imela zgolj ilu- strativen pomen za prikaz, kako uporabljamo inštruk- cije zbirnega jezika. Danes bomo povedali še kaj o zbirnem jeziku. Sintaksa zbirnega jezika Povedali smo že, da raču- nalniki manipulirajo samo z binarnimi števili. Ta so člo- veku zelo težko razumljiva. Bistvena izboljšava je upo- raba heksadecimalnih šte- vil. Načelno bi lahko pro- — grame pisali z njimi, a zelo težko in delali bi veliko na- pak. Programi v zbirnem je- ziku pa so že tako daleč stran od računalniške govo- rice, da naposled sploh ni nobene podobnosti. Pove- dati je treba, da je zbirni jezik najbolj primitiven ra- čunalniški jezik. Obstajajo tudi VIŠJI PROGRAMSKI JEZIKI angl. High Level Language-HLL), ki so člo- veku dosti bližji, vendar od računalniške logike že zelo oddaljeni. O njih kasneje. Zaenkrat si poglejmo sesta- vo zbirnega jezika. Vsako inštrukcijo zbirne- ga jezika pišemo v svojo vr- stico. Vsaka vrstica ima lah- ko štiri polja: lebela, mne- monik, operandi, komen- tar. Vsebini programske vr- stice pravimo tudi en pro- gramski stavek. Labela je oznaka pro- gramskega stavka. Če se bomo kjerkoli v programu želeli sklicevati na ta sta- vek, bomo to povedali z njegovo labelo, ki je neob- vezna. Mnemonik je najpo- membnejši del stavka in je obvezen. Sestoji iz skupine Črk, ki pomenijo inštruk- cijo. Polje operandov vsebuje informacijo za zbirnik, nad katerimi pomnilnimi lokaci- jami ali registri je potrebno izpeljati inštrukcijo. Neka- tere inštrukcije so brez ope- OSNOVE > RAČUNALNIŠTVA Teleksov tečaj za začetnike — randov, druge pa jih imajo celo več. Komentar ne more vpli- vati na programski stavek. Njegov namen je olajšati razumevanje programa, saj mnemoniki človeku nisu najbolj razumljiv način opi- sovanja posameznega po- stopka v računalniku. Zdaj moramo še ugotovi- ti, kako zbirnik razlikuje omenjena polja drugo od drugega. Pravilo :je dokaj preprosto. Začne na začet- ku vrstice. Vsi znaki do pr- vega presledka so labela. Če je prvi znak presledek, potem labele ni. Če si sledi več presled- kov, jih jemlje kot enega. Vsi znaki med prvim in drugim presledkom (ali skupino presledkov) so mnemonik. Če mnemonik ne terja operanda, predpostavlja, da je do konca vrstice le še ko- mentar. Če mnemonik zahteva operande, je vse med dru- gim in tretjim presledkom (ali skupino presledkov) polje operandov. Kar ostane, je komentar in ga sploh ne upošteva. Zapišimo sedaj vrstico programa v zbirnem jeziku s simboličnim zapisom polj: LABELA MNEMONIK OPERANDI KOMENTAR PI ADD A.B seštej registra A in B Vsak proizvajalec raču- nalnikov "(ali mikroproce- sorjev) poda s svojim pro- cesorjem tudi mnemonike, strojne kode procesorjevih inštrukcij, ter navadno tudi zbirnik za prevajanje tega zbirnega jezika v strojne kode. Toda to ne pomeni, da si uporabnik ne more izmisliti za zbirni jezik po- vsem drugih besed. Vendar mora v takem primeru na novo napisati zbirnik, ki bo nove izmišljene besede pre- vedel v natanko iste strojne kode, kot to dela proizva- jalčev zbirnik (in jih proce- sor tudi edino razume). Razen tega vsebuje zbir- nik še nekaj ukazov. Neka- teri zbirniki dovoljujejo, da računalnik sam dinamično dodeli prostor programu v Teleksov tečaj za zače.." pomnilniku ter nato izraču- na prave naslove operan- dov, drugim pa je treba na- tanko povedati, kje naj se naš program zapiše v po- mnilnik. Temu rabi ukaz ORIGIN. Njegov format je: ORIGIN H'10F4' kar pomeni, da se bo pro- gram začel na naslovu 10F4(HEX). Drugi po- memben ukaz je END Ta pove zbirniku, da je tem programa konec. Ukaz EOUATE dodeli labeli ne- ko vrednost: IPSILON WOU H'1F4A'" Labeli IPSILON dodeli vrednost 1F4A (HEX) in sedaj lahko: namesto 1F4A napišemo kar IPSILON kot operand. Na podoben način lahko definiramo konstanto ali naslov z mnemonikoma DEFINE CONSTANT (DC) in DEFINE AD- DRESS (AD): ŠTIRI DC H'0004' NASLOV DA H'12A2' boljši programi topo: mesečno. Enoletna Programi v zbirnem jeziku Naj to zadostuje, da si bomo ogledali primer pisa- nja programov v zbirnem jeziku. Najprej si zadajmo nalogo. Napisati želimo program, ki bo v pomnilni- ku skranjen na naslovu 0400(HEX) in ki bo seštel vsebino dveh pomnilnih lo- Piše: Tom Erjavec 6 kacij, nato pa rezultat zapi- sal na tretjo. Pomnilne lo- kacije želimo namesto s šte- vilkami simbolično imeno- vati z imeni. V ta namen moramo definirati" začetek programa na naslovu 0400(HEX), definirati sim- bolična imena pomnilniških lokacij ter napisati pro- gramske stavke, ki bodo izvršili zahtevano. Posku- simo: ORIGIN H'0400' JMP ZAČNI MIKI DC ' H'0001' MIŠKA DC H'0002' REZULTATDC H'0000' ZAČNI MOV | A,MIKI ADD A,MIŠKA MOV END začetek programa za 400 (HEX) skoči na labelo ZAČNI lokacija MIKI postane 1 lokacija MIŠKA postane 2 lokacija REZULTAT je prazna premakni MIKI, v regi- sterA seštej vsebini A in MIŠKA REZULTAT,A premakni vsoto v REZUL- TAT Komentirajmo zgornji program!, Ko bo zbirnik prevedel program in ga bo- mo zapisali v hitri pomnil- nik, se bo stavek JMP 28 ZAČNI začel na naslovu 400(HEX). Ker DC niso izvedljive inštrukcije (pro- cesor jih ne pozna, saj rabi- jo' samo za definiranje po-