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

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

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