Програмирање 1/К1 2008

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Задаци

Задатак 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