Програмирање 1/К1 2008
Задаци
Задатак 1
Написати програм на симболичком машинском језику за пицоЦомпутер који учитава низ бројева дужине Н и смешта их у меморију почевши од адресе 100. Ако се за дужину низа не унесе позитиван број, програм треба да прекине извршавање. Програм треба да израчуна и испише средњу вредност оних елемената задатог низа чије су вредности дељиве са 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
Задатак 2
Написати потпрограм на симболичком машинском језику за пицоЦомпутер који одређује збир цифара декадне репрезентације позитивног целог броја смештеног на локацији А. Потпрограм смешта резултат у локацију Б. Потпрограм не сме да мења садржај локације А. Написати програм који најпре учита цео број н са тастатуре, а затим позива описан потпрограм и исписује његов резултат. Програм треба да провери да ли је унета вредност негативна и да понови унос ако јесте. Такође, програм треба да извршава описан поступак све док корисник не унесе вредност 0, када се програм прекида.
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