You are on page 1of 6

Увод

§ Архитектура pC-a
§ Структура машинских инструкција
§ Задаци

– Пико компјутер –
(picoComputer)

Програмирање 1, ЕТФ – 2011 1/21 Програмирање 1, ЕТФ – 2011 2/21

Музичка кутија из 19. века Музичка кутија из 19. века

Програмирање 1, ЕТФ – 2011 3/21 Програмирање 1, ЕТФ – 2011 4/21


Музичка кутија из 19. века Архитектура pC-a

Програмирање 1, ЕТФ – 2011 5/21 Програмирање 1, ЕТФ – 2011 6/21

Структура машинских инструкција Задатак 1

§ Саставити програм на симболичком машинском


кôд операције i1 a1 i2 a2 i3 a3 језику рачунара pC за израчунавање и
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
исписивање вредности израза c = a 2 + a ⋅ b + b 2
где су a и b цели бројеви који се учитавају са
тастатуре.
§ Инструкције преноса података A=1
0
• MOV B=2
C=3 1 (A) 2
§ Аритметичке инструкције T=4
Учитају се 2 (B) 3
• ADD, SUB, MUL, DIV ORG 8 вредности 2 и 3 3 (C) 4 10 19
§ Контролне инструкције IN A,2
4 (T) 6 9
• BEQ, BGT, JSR, RET, STOP MUL C,A,A
MUL T,A,B 5
§ Улазно–излазне инструкције ADD C,C,T
• IN, OUT 6
MUL T,B,B
ADD C,C,T 7
STOP C
Програмирање 1, ЕТФ – 2011 7/21 Програмирање 1, ЕТФ – 2011 8/21
Задатак 2 Задатак 2

§ Саставити програм на машинском језику pC који учитава 2 § Решење на симболичком машинском језику
цела броја са тастатуре и исписује их по нерастућем
редоследу. Претходно решење: Једноставније решење:
P=0 A=1
Опис променљиве или радње Адр Садржај локације оперативне меморије Hеx
A=1 B=2
P 0
A 1
B=2 ORG 8
B 2 ORG 8 IN A,2
IN A, 2 BGT A,B,ISPIS1
1. Учитај А и B 8 IN 0 #А 0 2 7102 BGT A, B, KRAJ STOP B,A
2. Ако је A>B, скочимо на (7) 9 BGT 0 #А 0 #B 1 0 6128 BEQ A, B, KRAJ ISPIS1: STOP A,B
10 адр(наредба 7) 0010
MOV P, A
3. Ако је A=B, скочимо на (7) 11 BEQ 0 #А 0 #B 1 0 5128
12 адр(наредба 7) 0010
MOV A, B
4. P ← А 13 MOV 0 #P 0 #А 0 0 0010 MOV B, P
5. А ← B 14 MOV 0 #А 0 #B 0 0 0120 KRAJ: STOP A, B
6. B ← P 15 MOV 0 #B 0 #P 0 0 0200
7. Испиши А и B и заврши 16 STOP 0 #А 0 #B 0 F120
Програмирање 1, ЕТФ – 2011 9/21 Програмирање 1, ЕТФ – 2011 10/21

Задатак 3 Задатак 4

§ Који од следећих програма за pC исписује § Саставити програм на машинском језику рачунара


вредност 1? pC који учитава n целих бројева са тастатуре, а
a) A=1 затим израчунава и исписује целобројни део
ORG 8 аритметичке средине тих бројева.
MOV (A), #A N=1 ADD TEK, TEK, 1
STOP A TEK=2 ADD I, I, 1
b) A=1 S=3 BGT N, I, PETELJA
ORG 8 I=4 DIV S, S, N
MOV A, #A ORG 8 STOP S
STOP A IN N Алгоритам:
c) A=1 MOV TEK, 100 - Учитај N
ORG 8 IN (TEK), N - Учитај N целих бројева
OUT A MOV S, 0 - Израчунај суму учитаних бројева
STOP A MOV I, 0 - Средња вредност је: сума / N
PETLJA: ADD S, S, (TEK) - Испиши резултат и заврши

Програмирање 1, ЕТФ – 2011 11/21 Програмирање 1, ЕТФ – 2011 12/21


Задатак 5 Задатак 5

§ Саставити програм на симболичком машинском § Итеративно решење


језику рачунара pC за израчунавање збира првих N=1
N природних бројева и збира квадрата првих N S1=2
природних бројева. S2=3
K=4
На основу аналитичке формуле ORG 8
IN N
N=1 ADD K, K, N n
n(n + 1) MOV S1, 0
S1=2 MUL S2, S1, K S1 = ∑ i = MOV S2, 0
S2=3 DIV S2, S2, 3 i=1 2
PETLJA: ADD S1, S1, N
K=4 STOP S1, S2 n
n(n + 1)(2n + 1)
ORG 8
S 2 = ∑ i2 = MUL K, N, N
i=1 6 ADD S2, S2, K
IN N
SUB N, N, 1
ADD K, N, 1
BGT N, 0, PETLJA
MUL S1, N, K
STOP S1, S2
DIV S1, S1, 2

Програмирање 1, ЕТФ – 2011 13/21 Програмирање 1, ЕТФ – 2011 14/21

Задатак 6 Задатак 7

§ Саставити програм на машинском језику рачунара § Које вредности исписује приложени програм за pC?
pC којим се на основу два дата низа бројева а[i] и
b[i] формира нови низ c[i], тако да важи c[i]= X=1 ;симбол X има вредност 1
а[i]+ b[i], (i=0, 1, ..., n-1). Y=2 ;симбол Y има вредност 2
Z=3 ;симбол Z има вредност 3
A=100 ORG 8 DALJE: ADD (adrC), (adrA), (adrB) ORG 8 ;програм ће бити смештен од адресе 8
B=200 IN N ADD adrA, adrA, 1 MOV X, #Y ; X := вредност симбола (Y) = 2
C=300 MOV adrA, #A ADD adrB, adrB, 1 ADD Y, X, #X ; Y := 2 + вредност симбола (X) = 2 + 1 = 3
N=0 MOV adrB, #B ADD adrC, adrC, 1 MOV (Y), #Y ; [Z :=]adr(Y):= вредност симбола (Y) = 2
adrA=1 MOV adrC, #C SUB I, I, 1 STOP X, Y, Z ;биће исписана вредност: 2 3 2
adrB=2 IN (adrA), N BGT I, 0, DALJE
adrC=3 IN (adrB), N MOV adrC, #C a) 1 2 3
I=4 MOV I, N OUT (adrC), N b) 2 3 3
STOP
c) 2 3 2 þ

Програмирање 1, ЕТФ – 2011 15/21 Програмирање 1, ЕТФ – 2011 16/21


Задатак 8 Задатак 9

§ Саставити програм на машинском језику рачунара § Саставити потпрограм на машинском језику


pC којим се из датог низа целих бројева рачунара pC за израчунавање n!.
изостављају сви елеметни чија је вредност парна. n
n! = n ⋅ (n − 1) ⋅ (n − 2) ⋅ ... ⋅ 2 ⋅1 = ∏ i
i =1
A=200 IN N ADD adrJ, adrJ, 1
N=1 MOV adrI, #A PAR: ADD adrI, adrI, 1 N=1 NF: MOV F, 1
adrI=2 MOV adrJ, adrI SUB K, K, 1 F=2 BEQ N, 0, GOTOVO
adrJ=3 IN (adrI), N BGT K, 0, DALJE ORG 8 PETLJA: MUL F, F, N
K=4 MOV K, N SUB N, adrJ, #A DALJE: IN N SUB N, N, 1
P=5 DALJE: DIV P, (adrI), 2 BEQ N, 0, KRAJ BGT 0, N, KRAJ BGT N, 0, PETLJA
ORG 8 MUL P, P, 2 MOV adrI, #A JSR NF GOTOVO: RTS
BEQ P, (adrI), PAR OUT (adrI), N OUT F
MOV (adrJ), (adrI) KRAJ: STOP BEQ N, N, DALJE
KRAJ: STOP

Програмирање 1, ЕТФ – 2011 17/21 Програмирање 1, ЕТФ – 2011 18/21

Задатак 10 Задатак 11

§ По стартовању следећег програма на § Који од понуђених потпрограма исправно врши


симболичком машинском језику за pC редом се замену (SWAP) вредности у локацијама чије су
уносе следеће вредности: 22, 16, 2. Шта ће бити адресе различите и налазе се у локацијама А и B
исписано? (уз претпоставку да ниједна аритметичка
операција не изазива прекорачење)?
X=1 ADD K,K,1 a) 5 4 1
Y=2 BGT M,K,L1 b) 5 4 2 þ
N=3 STOP a) SWAP: MOV C, #A (b) SWAP: ADD (A), (A), (B) c) SWAP: MOV (C), A
K=4 c) 431 MOV #A, #B SUB (B), (A), (B) MOV A, (B)
M=5 SBR: MOV X,0 MOV #B, C SUB (A), (A), (B) MOV B, (C)
ORG 8 L2: ADD X,X,1 RTS RTS RTS
MOV K,0 MUL Y,X,X
MOV M,#N BGT N,Y,L2
L1: IN N OUT X
JSR SBR RTS

Програмирање 1, ЕТФ – 2011 19/21 Програмирање 1, ЕТФ – 2011 20/21


Задатак за самосталну вежбу

§ У меморији pC налази се листа целих бројева


представљена на следећи начин: ако се на
локацији са адресом А налази цео број, на
локацији са адресом А+1 се налази адреса
следећег целог броја у листи. Адреса 0 означава
крај листе. Шта израчунава потпрограм PP?

U=1 PP: MOV S, 0 a) Број елемената у листи


S=2 PETALJA: ADD S, S, (U) на коју указује U
ORG 8 ADD U, U, 1 b) Збир елемената у листи
… BEQ (U), 0, KRAJ на коју указује U þ
MOV U, (U) c) Збир елемената
BEQ U, U, PETLJA увећаних за један у
KRAJ: RTS листи на коју указује U

Програмирање 1, ЕТФ – 2011 21/21