Programiranje 1/K1 2018

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 na osnovu niza celih brojeva dužine N (gde je 1<N≤100) formira novi niz čiji će svaki element sadržati najveći delilac bez ostatka odgovarajućeg elementa polaznog niza, ne računajući sam taj element. Program najpre učitava broj N, a zatim i elemente niza. Ukoliko se za dužinu niza unese nekorektna vrednost, program treba da završi svoje izvršavanje. Nakon unosa program vrši zahtevanu obradu i ispisuje novoformirani niz. Određivanje najvećeg delioca zadatog broja realizovati kao zaseban potprogram.

		n=1
		i=2
		adrA=3
		adrB=6
		a=100
		b=200
		pom=4
		nzd=5
		del=7
		ORG 8 ; TODO: Adjust to make room for static data.
		
		; Program entry point
		in n
		mov i, 100
		bgt 0, n, kraj
		bgt n,i, kraj
		mov adrA,#a
		mov adrB,#b
		in (adrA), n
		mov i,n
		
		petlja:jsr najmanjiZajDel
		mov (adrB),nzd
		add adrB,adrB,1
		add adrA,adrA,1
		sub i,i,1
		bgt i,0, petlja
		mov adrB,#b
		out (adrB),n
		kraj: stop
		
		najmanjiZajDel: mov del, 1
		mov nzd,1
		ponovi: div pom, (adrA), del
		mul pom,pom,del
		bgt (adrA),pom, nije
		
		mov nzd,del
		nije: add del,del,1
		bgt (adrA),del,ponovi
		rts