Programiranje 1/K1 2007

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

Zadaci

Zadatak 1

Napisati program na simboličkom mašinskom jeziku za picoComputer koji učitava dužinu D niza N koja može biti najmanje 3 i elemente niza koje smešta počevši od adrese 100. Ako se za dužinu niza ne unese pozitivan broj, program treba da prekine izvršavanje. Program, zatim, proverava da li za učitani niz brojeva važi da je vrednost svakog elementa (izuzev prvog i drugog) jednaka zbiru vrednosti prethodna dva elementa, odnosno da li važi N[i] = N[i-1] + N[i-2], i=3..D. Program treba da ispiše vrednost 1 u slučaju da učitani niz ispunjava zadati uslov ili 0 u slučaju da ne ispunjava.

		adrA=1
		n=2
		a=100
		i=3
		ps=4
		ds=5
		maxAdrA=6
		odgovor=7
		ORG 8 ; TODO: Adjust to make room for static data.
		
		in n
		mov i,3
		bgt i,n,kraj
		mov adrA,#a
		in (adrA),n
		mov maxAdrA,n
		add maxAdrA,maxAdrA,adrA
		sub maxAdrA,maxAdrA,1
		mov ps,adrA
		add ds,ps,1
		add adrA,ds,1
		mov i,adrA
		mov odgovor,1
		petlja: jsr proveri
		add ps,ps,1
		add ds,ds,1
		add adrA,adrA,1
		beq odgovor,0,kraj1
		bgt maxAdrA,adrA,petlja
		beq maxAdrA,adrA,petlja
		kraj1: out odgovor
		kraj: stop 
		
		proveri: add i, (ps), (ds)
		beq i,(adrA),izadji
		mov odgovor,0
		izadji: rts

Zadatak 2

Napisati potprogram na simboličkom mašinskom jeziku za picoComputer koji određuje celobrojni količnik i ostatak prilikom deljenja dva cela broja koji su smešteni u lokacijama A (deljenik) i B (delilac). Potprogram smešta količnik u lokaciju K a ostatak u lokaciju O. Pri tom, potprogram ne sme da menja sadržaj lokacija A i B. Napisati program koji najpre učitava dva cela broja sa tastature (najpre deljenik a zatim delilac), zatim poziva opisan potprogram i nakon toga ispisuje vrednost količnika i ostatka. Program treba da izvršava prethodne korake sve dok korisnik ne unese vrednost 0 za delioca, kada se program prekida.

		a=1
		b=2
		k=3
		o=4
		ORG 8 ; TODO: Adjust to make room for static data.
		ponavljaj: in a
		in b
		beq b,0,kraj
		
		jsr deljenje
		out k
		out o
		beq a,a,ponavljaj
		kraj:stop

		deljenje: div k,a,b
		mul o,k,b
		sub o,a,o
		rts