blob: 2aa1b02411852460dc3a9dc1c8c50b986a95f9e5 (
plain)
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
|
.label len 1
jmp start
read_input:
mov a 0
mov b 0
mov c 64
sys
mov b 1
sub
str c len
ret
str_to_num:
; pointer to current character
.label ptr 2
ld a len
mov b 63
add
str c ptr
.label mult 3
mov a 1
str a mult
.label num 4
mov a 0
str a num
.label zero 48
stm_loop:
;load char, subtract zero, multiply by 10
ld b ptr
ldr a b
mov b zero
sub
swp c a
ld b mult
mul
; add to num
swp c b
ld a num
add
str c num
ld a mult
mov b 10
mul
str c mult
; move pointer
ld a ptr
mov b 1
sub
str c ptr
cmp c 63
jz stm_loop
ret
start:
jmr read_input
jmr str_to_num
ld a 4
str a 8 ; store number 1 to 8
jmr read_input
jmr str_to_num
ld a 4 ; load number from read
ld b 8
add
str c 16 ; put our number into 16
#using printer.a
jmr print_num ; print number at 16 (well not print but stringify)
mov a 1 ; write
mov b 1 ; stdout
mov c 32 ; address
sys ; syscall
|