Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

picoComputer

1
-

1/84

n
n
n
n
n

2/84


n 16-
n - 64 16-
n 16-
n

3/84

4/84

kd operacije
15

14

13

12

i1
11

a1
10

i2
8

a2
6

i3
4

a3
2

5/84

kd operacije
15

14

13

12

i1
11

a1
10

i2
8

a2
6

i3
4

14

13

12

11

10

6/84

a3

Konstanta/Adresa
15


i = 0, adr(A) = a


i = 1, adr(A) = val(a)

0
7/84

8/84

0
1

...

n
n

65535
-

9/84

n
n

()

( )
(
)

n
n
n
n

10/84

11/84

12/84

:
n
n


n
n

13/84

MA := val(PC);
MD := val(val(MA));
IR := val(MD);
PC := val(PC) + 1;

Memory
Address
register

kkkk
xxxx (4 ) X

Memory Data
register

0nnn (4 )
N

Instruction
Register

????

Program
Counter

14/84

ccc

15/84

16/84

ival i sval

X val(X)
n

val ,

#X

(X) val(val(X))

( 0...7),


#X - adr(X)

17/84

X = val(X) - 23

23

A[0], A[1], A[2],

#X = adr(X) - 5

adr(A[j]) = adr(A) + j, j >=0

(X) = val(val(X)) - 18

A[j] = val(adr(A) + j), j >= 0


23

18/84

18

19/84

20/84

adr(X[0]) = adr(X) - 18

23

adr(X[1]) = adr(X) + 1 - 19

0000 MOV

23

18

21/84

0001 ADD
1001 ADD

A1:=A2+A3 ( )
A1:=A2+val(val(PC)), A1:=val(val(PC))+A3

0010 SUB
1010 SUB

A1:=A2A3 ( )
A1:=A2val(val(PC)), A1:=val(val(PC))A3

0011 MUL
1011 MUL

A1:=A2*A3 ( )
A1:=A2*val(val(PC)), A1:=val(val(PC))A3

0100 DIV
1100 DIV

A1:=A2/A3 ( )
A1:=A2/val(val(PC)), A1:=val(val(PC))/A3
> 8 adr(A2)>0
adr(A3)>0

23/84

i3=0,
i3=1,
i3=0,
i3=1,

a3=0
a3=0
a3>0
a3=7

A1:=A2
A1:=val(val(PC))
A1[j]:=A2[j], j=0, 1, ,val(A3)1
A1[j]:=A2[j], j=0, 1, ,val(val(PC))1

22/84

0101 BEQ

, 0110 BGT


:
Uslov_Ispunjen PC:=Adresa_Skoka.
:
(1) A1=A2, A1>A2 ( kodirano: a1>0 a2>0 )
(2) A1=0, A1>0 (: a1>0 i2=a2=0 )
(3) 0=A2, 0>A2 (: i1=a1=0 a2>0 )
: adr(A1)>0 adr(A2)>0
:
(1) i3=0 0a37 Adresa_Skoka=val(a3)
(2) i3=1 a3=0 Adresa_Skoka=val(val(PC))

24/84

0111 IN

n ,
A1[j], J=0, ..., n-1.
i2=0 06
n, n 127.
i2=1 a2=0 n=A3. n>0.

1101 JSR

stek := PC+1; PC:=val(val(PC)) .


PC
.

1000 OUT

n ,
A1[], j=0, , n1 .
n , IN.

1110 RTS

PC:=stek

25/84

1111 STOP

PC-.
0000,
, ,
,
(
0 ).

MOV 0000

X:= Y

0000 xxxx ???? 1000


cccc cccc cccc cccc

X:= C

0000 xxxx yyyy 1111


cccc cccc cccc cccc

27/84

0000 xxxx yyyy 0000

0000 xxxx yyyy 0nnn

26/84

X[j]:= Y[j], j=0, .........., N1


X[j]:= Y[j], j=0, .........., C1

28/84

ADD b001
SUB b010
MUL b011
DIV b100

0kkk xxxx yyyy zzzz

X : = Y Z, { +, , *, / }

1kkk xxxx 0000 zzzz


cccc cccc cccc cccc

X : = C Z ( zzzz>0 )

BEQ 0101
BGT 0110

kkkk xxxx yyyy 1000


cccc cccc cccc cccc

if X Y then PC:=cccccccccccccccc
( xxxx>0, yyyy>0 )

kkkk xxxx 0000 0nnn

if X Y then PC:= val(nnn) ( xxxx>0 )

0101 xxxx xxxx 1000


cccc cccc cccc cccc

29/84

IN 0111

kkkk xxxx 1000 nnnn


kkkk xxxx 0ccc cccc

OUT 1000

/ X[j], j=0, ..........., N1

30/84

JSR 1101

1101 ???? ???? ????


cccc cccc cccc cccc

Stek:=PC+1, PC:=cccccccccccccccc

1110 ???? ???? ????

PC:=stek

/ X[j], j=0, ..........., C1


RTS 1110

PC:= cccccccccccccccc ( xxxx>0 )


( GOTO C )

31/84

32/84

:
STOP 1111

1111 0000 0000 0000


1111 xxxx yyyy zzzz


O X, Y, Z
( xxxx>0, yyyy>0, zzzz>0 )

M:

33/84

BGT

1, 9 ADD

IN

2, A SUB

OUT

3, B MUL

JSR

4, C DIV

RTS

STOP

n
n

35/84

34/84

MOV

BEQ

36/84

simbol = vrednost

:
X - val(3)

#X - 3
X

X=3

(X)
X - val(val(3))

37/84

(bin)
(hex)

MOV X, 65

39/84

65

0041

#X

0003

0011

(X)

1011

MOV X, #CNST

38/84

40/84

N := broj_ponavljanja
da

BEQ X, Y, skip
ne

loop:
Raunanje

Instrukcije koje se preskau


N := N - 1

BGT N, 0, loop

skip:
da

ne
-

41/84


ORG konstanta [ ; komentar ]

43/84

42/84

konstanta

# simbol
simbol

simbol

(
)
simbol
[simbol:] MOV
,
(
simbol
)

simbol

,
(simbol)


simbol = konstanta [ ; komentar ]

konstanta

# simbol
simbol

[ ; komentar]

44/84

konstanta

ADD
simbol , # simbol

SUB simbol
(simbol) simbol

[simbol:]

,
(simbol)
MUL (simbol)
DIV
konstanta simbol

# simbol (simbol)

[ ; komentar]

45/84

konstanta

# simbol
IN
simbol

[ simbol :]

,
[ ; komentar ]
simbol
OUT ( simbol )

( simbol )

47/84

simbol

(simbol)
BEQ simbol
[simbol :]

BGT (simbol)

simbol
,

(simbol)
simbol

0
,
,
[ ; komentar]
(
simbol
)

simbol
,

( simbol)

46/84

[simbol:] JSR simbol [ ; komentar]


[simbol:] RTS [ ; komentar]
simbol
[simbol:] STOP
(simbol)
-

simbol simbol
,
,
[ ; komentar]
(simbol) (simbol)

48/84



M N,
M > N

R := M - M / N N

LOOP

M := N
N := R
R >0

DA

Prikazati rezultat M
-

49/84

M=1
N=2
R=3
ORG 8
IN
M, 2
LOOP:DIV R, M, N
MUL R, R, N
SUB R, M, R
MOV M, N
MOV N, R
BGT R, 0, LOOP
STOP M
-

***
picoComputer 1 3?

; Adresa za M
; Adresa za N
; Adresa za R
; Pocetak programa
; Ucitavanje M i N
; R := |_ M / N _|
; R := |_ M / N _|*N
; R := M mod N
; M := N
; N := R
; ako R>0 idi na LOOP

50/84

A=4
B=6
C=2
D=5
E=1
F=3
G=0
ORG 8

(A) OUT (A), #C


51/84

MOV B, #C
MOV D, #A
MOV (B), D
MOV (C), #B
DIV (A), A, B
SUB (B), C, B
SUB (C), (C), (A)
***

B) OUT F, #F

(C) OUT (B), 2

52/84

picoComputer
N>1:
N=1
adrA = 2
adrK = 3
adrP = 4
T=5
A = 100
ORG 8

IN
MOV
IN
MOV
ADD

A)
-

N
P:SUB adrK, adrK, 1
adrA, #A
MOV T,(adrK)
(adrA), N
MOV (adrK), (adrP)
adrP, adrA
MOV (adrP), T
adrK, adrA,N
ADD adrP, adrP, 1
BGT adrK, adrP, P
OUT (adrA), N
STOP
B)

(C)

53/84


picoComputer, A B,

A=1
JSR Q
B=2
STOP X
X=3
Q:
SUB N,N,1
N=4
BEQ N,0,KRAJ
ORG 8
MUL X,X,B
IN
A,2
JSR Q
MOV X,1
KRAJ: RTS
MOV N,A
) A*B
-

PCAS

B) AB

C) BA

54/84

PCAS

: PCAS.XE
PCAS
pC- pC-.
:

,
(MENU).

55/84

56/84

MENU

R
T /
L /
H
Q

A
M
S
D
C

MENU

57/84

MENU A

pC
( ).
PCA
(ime_prog.PCA).
-
.

59/84

58/84

MENU M

pC (
). HEX

(ime_prog.HEX).
,
-
.
-

60/84

aaaa

(hex)

iiii

MENU S

(hex)

iiii

61/84

MENU D

62/84

MENU C


, ,
ime_prog.HEX

63/84

64/84

MENU R

65/84

MENU T

/
.

,
,

, 07
.
-

MENU L

/
PCAS
ime_prog.LOG
(-; -).


PCAS.LOG ,


.
-

67/84

66/84

MENU H


PCAS-
pC

68/84

$ EDIT ime_prog.PCA

$ PCAS

PCAS-

ime_prog.LOG

( PCAS- )

$ TYPE ime_prog.LOG

69/84

71/84

70/84

72/84

73/84

75/84

74/84

76/84

77/84

79/84

78/84

80/84

81/84

83/84

82/84

You might also like