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

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

Задаци

Задатак 1

Написати програм на симболичком машинском језику за пицоЦомпутер који на основу низа целих бројева дужине Н (где је 1<Н≤100) формира нови низ чији ће сваки елемент садржати највећи делилац без остатка одговарајућег елемента полазног низа, не рачунајући сам тај елемент. Програм најпре учитава број Н, а затим и елементе низа. Уколико се за дужину низа унесе некоректна вредност, програм треба да заврши своје извршавање. Након уноса програм врши захтевану обраду и исписује новоформирани низ. Одређивање највећег делиоца задатог броја реализовати као засебан потпрограм.

		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