-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathentry.asm
77 lines (65 loc) · 1.17 KB
/
entry.asm
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#{
~label 'sum' 0x0
~label 'n' 0x1
~label 'i' 0x2
~label 'k' 0x3
~label 'z' 0x4
}
.ldi &(![~n]) <| $(0xAA)
.ldi &(![~i]) <| $(0x2)
;float mode ON
.ldx &(0x18) <| $(0x1)
;define float param
.orb &(0x3)
.val @float_t(4.0)
.val @float_t(2.0)
.val @float_t(3.0)
.pull &(![~sum])
.pull &(![~k])
.pull &(![~z])
;formula Nilakantha [3 + (4/(2*3*4)) - (4/(4*5*6)) + (4/(6*7*8)) - (4/(8*9*10)) ...]
.ref.t &(0xA)
.dup &(![~k]) &(0xB)
.inc &(![~k])
.mul &(0xB) &(0xB) &(![~k])
.inc &(![~k])
.mul &(0xB) &(0xB) &(![~k])
.dup &(![~z]) &(0xC)
.div &(0xC) &(![~z]) &(0xB)
.add &(![~sum]) &(![~sum]) &(0xC)
;float mode OFF for inc int
.ldx &(0x18) <| $(0x0)
.inc &(![~i])
.inc &(![~i])
;float mode ON
.ldx &(0x18) <| $(0x1)
;revert z
.neg &(![~z])
;ckeck float result
.ckft &(![~sum])
.jump.g &(0xA) ~- &(![~n]) &(![~i])
;result return to console
.mvx &(0x1) &(0x5) |> &(![~sum])
.halt
;realisation C#
;var s=3,n=5,i=2,z=4,k=2;
;
;for(n; i < n; i + 2)
;{
; var tmpK = k;
; k++;
; tmpK *= k;
; k++;
; tmpK *= k;
; var tmpZ = z / tmpK;
; s = s + tmpZ;
; z = -z;
;}
;
;or
;
;for(n; i < n; i + 2)
;{
; s += (z / (i * (i + 1) * (i + 2));
; z = -z;
;}