4 Nacela programiranja u asemblerskom jeziku

Download Report

Transcript 4 Nacela programiranja u asemblerskom jeziku

Načela programiranja u
asemblerskom jeziku
• Svaki procesor ima svoj vlastiti skup
instrukcija koji razumije. Instrukcija se
sastoji od :
-operacijskog koda (koji kaže koju
operaciju treba izvršiti)
-polje načina adresiranja i adresnog
dijela (koji kaže gdje se nalaze
operandi i gdje smjestiti rezulat)
• Operacijski kod dobiva svoju slovčanu
kraticu koja podsjeća na djelovanje
instrukcije a adrese operanada i rezultata
dobivaju svoja simbolička imena.
• Tako su najčešći mnemonici za ar. log.
instrukcije:
• ADD zbrojiti (od englekog add — zbrojiti);
• SUB oduzeti (od engleskog subtract —
oduzeti);
• MUL pomnožiti (od engleskog multiply —
pomnožiti)
• DIV podijeliti (od engleskog divide —
podijeliti)
• DEC smanjiti za jedan (od engleskog
decrement — smanjiti)
• INC povećati za jedna (od engleskog
inerement — povećati)
• S obzirom da je vrlo često potrebno premještati
podatke iz pojedinih registara procesora u
spremnik i obrnuto ili jednog registra u drugi,
često se koristi instrukcija za premještanje s
mnemonikom
MOV premjestiti (od engleskog move —
pomaknuti).
Uz taj mnemonik uvijek se moraju napisati
dvije adrese:
1. adresa ishodišta, tj. adresa odakle
dolazi podatak, koju pišemo kao <src>,
2.adresa odredišta, tj. adresa kamo se
podatak premješta, koju pišemo kao
<dest>
• Tako se općenito piše:
MOV <dest> <src> (premjesti sadržaj sa
druge adrese na prvu)
• Program napisan u asembleru prevodi se
u strojni jezik i to radi program već
ugrađen u asembler.
• Programiranje u asembleru je i dalje teško
pa su nastali viši programski jezici gdje
više naredbi asemblera je zamijenjeno
jednom naredbom višeg programskog
jezika pa su ti programi kraći i razumljiviji.
• Međutim i njih treba prevesti u strojni oblik
prije izvođenja. To rade posebni programi
za prevođenje- kompajleri.
• Primjer 1.
ADD X,Y
znači zbroji X+Y i rezultat
spremi u x
• Primjer 2.
• Treba izračunati izraz X+Y/Z i rezultat staviti
u A. X, Y I Z su neke varijable spremljene na
adresama čiji su mnemonički simboli X, Y I Z.
MOV A,Y -stavljamo u ak. A varijablu Y
DIV A,Z -dijelimo sadržaj A sa Z, rez.u A tj.(A)(A/Z)
ADD A,X -zbrajamo sadržaj ak. sa X
• Primjer 3. Izračunati X+(Y*Z-V/W).
Rezultat spremiti na neku adresu C.
MOV A,V
DIV A / W
MOV C,A
MOV A,Y
MUL A,Z
SUB A,C
ADD A,X
MOV C,A
• Instrukcije ponekad mogu biti
jednoadresne. Tada se jedan operand
stavlja u akumulator. Pri tome se operacija
obavlja između sadržaja akumulatora i
drugog operanda a rezultat ponovo ide u
akumulator. Pri tome koristimo naredbu za
stavljanje podatka u akumulator LOAD a
za spremanje sadr. ak. na neku drugu
adresu STORE.
• Primjer:
1.X+Y/Z
2. C=X+(Y*Z-V/W)
1.
LOAD Y
DIV Z
ADD X
STORE C
• 2.
LOAD V
DIV W
STORE C
LOAD Y
MUL Z
SUB C
ADD X
STORE C