Програмирање 1/К1 2008
Zadaci
Zadatak 1
Napisati program na simboličkom mašinskom jeziku za picoComputer koji učitava niz brojeva dužine N i smešta ih u memoriju počevši od adrese 100. Ako se za dužinu niza ne unese pozitivan broj, program treba da prekine izvršavanje. Program treba da izračuna i ispiše srednju vrednost onih elemenata zadatog niza čije su vrednosti deljive sa 3.
adrA=1
n=2
a=100
i=3
pom=4
brojacDeljivih=5
s=6
ORG 8 ; TODO: Adjust to make room for static data.
in n
bgt 0,n,kraj
beq 0,n,kraj
mov adrA,#a
in (adrA),n
mov i,n
mov brojacDeljivih,0
petlja: jsr deljivSaTri
add s,s,pom
add adrA,adrA,1
sub i,i,1
bgt i,0,petlja
div s,s,brojacDeljivih
out s
kraj: stop
deljivSaTri: mov pom,(adrA)
div pom,pom,3
mul pom,pom,3
beq pom,(adrA), deljiv
mov pom,0
beq pom,pom,iskoci
deljiv: mov pom,(adrA)
add brojacDeljivih, brojacDeljivih,1
iskoci: rts
Zadatak 2
Napisati potprogram na simboličkom mašinskom jeziku za picoComputer koji određuje zbir cifara dekadne reprezentacije pozitivnog celog broja smeštenog na lokaciji A. Potprogram smešta rezultat u lokaciju B. Potprogram ne sme da menja sadržaj lokacije A. Napisati program koji najpre učita ceo broj n sa tastature, a zatim poziva opisan potprogram i ispisuje njegov rezultat. Program treba da proveri da li je uneta vrednost negativna i da ponovi unos ako jeste. Takođe, program treba da izvršava opisan postupak sve dok korisnik ne unese vrednost 0, kada se program prekida.
a=1
b=2
tnt=3
s=4
ost=5
ORG 8
ponovi_unos: in a
bgt 0,a,ponovi_unos
beq a,0,kraj
mov tnt,a
mov s,0
petlja: jsr mod
add s,s,ost
div tnt,tnt,10
bgt tnt,0,petlja
out s
beq a,a,ponovi_unos
kraj: stop
mod: mov ost,tnt
div ost,ost,10
mul ost,10,ost
sub ost,tnt,ost
rts