-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfibonacci.cvm
56 lines (56 loc) · 1.09 KB
/
fibonacci.cvm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
; Esercizio dal forum moodle
52 ; Programma che stampa i primi n numeri della sequenza di fibonacci
12 ; [0] MOV R0 n
0 ; [1]
6 ; [2] n (overflow si verifica a n = 47)
12 ; [3] MOV R2 1
2 ; [4] a = x - 2 salvato nel registro 2
1 ; [5]
12 ; [6] MOV R3 1
3 ; [7]
1 ; [8] b = x - 1 salvato nel registro 3
12 ; [9] MOV R10 1
10 ; [10]
1 ; [11] costante 1 salvata nel registro 10
31 ; [12] SUB R0 R10
0 ; [13]
10 ; [14] n - 1 per evitare controllo uguaglianza if
11 ; [15] POP R0
0 ; [16]
1 ; [17] DISPLAY R2
2 ; [18]
1 ; [19] DISPLAY R3
3 ; [20]
12 ; [21] MOV R1 2
1 ; [22] indice i salvato nel registro 1 utilizzato per ciclo while
2 ; [23] i = 2
; init_for:
31 ; [24] SUB R0 R1
0 ; [25]
1 ; [26]
25 ; [27] JNEG exit
51 ; [28]
30 ; [29] ADD R2 R3
2 ; [30]
3 ; [31] a + b
11 ; [32] POP R4
4 ; [33] x = a + b
10 ; [34] PUSH R3
3 ; [35] b in stack
11 ; [36] POP R2
2 ; [37] a = b
10 ; [38] PUSH R4
4 ; [39] x in stack
11 ; [40] POP R3
3 ; [41] b = x
1 ; [42] DISPLAY R4
4 ; [43]
30 ; [44] ADD R10 R1
10 ; [45]
1 ; [46] i + 1 in stack
11 ; [47] POP R1
1 ; [48] i = i + 1
22 ; [49] JUMP init_for
24 ; [50]
; exit:
0 ; [51] HALT