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

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

Задаци

Задатак 1

Написати програм на симболичком машинском језику за picoComputer који учитава дужину D низа N која може бити најмање 3 и елементе низа које смешта почевши од адресе 100. Ако се за дужину низа не унесе позитиван број, програм треба да прекине извршавање. Програм, затим, проверава да ли за учитани низ бројева важи да је вредност сваког елемента (изузев првог и другог) једнака збиру вредности претходна два елемента, односно да ли важи N[i] = N[i-1] + N[i-2], i=3..D. Програм треба да испише вредност 1 у случају да учитани низ испуњава задати услов или 0 у случају да не испуњава.

		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

Задатак 2

Написати потпрограм на симболичком машинском језику за picoComputer који одређује целобројни количник и остатак приликом дељења два цела броја који су смештени у локацијама A (дељеник) и B (делилац). Потпрограм смешта количник у локацију K а остатак у локацију O. При том, потпрограм не сме да мења садржај локација A и B. Написати програм који најпре учитава два цела броја са тастатуре (најпре дељеник а затим делилац), затим позива описан потпрограм и након тога исписује вредност количника и остатка. Програм треба да извршава претходне кораке све док корисник не унесе вредност 0 за делиоца, када се програм прекида.

		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