projects
/
YACASL2.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
YACAL2: CASL2処理系
[YACASL2.git]
/
as
/
itoa2.casl
1
MAIN START
2
LD GR1,I
3
LAD GR2,10
4
LAD GR5,0
5
LOOP CPA GR1,GR2
6
JMI NEXT
7
CALL DIV
8
ADDA GR4,Z
9
ST GR4,STR,GR5
10
LAD GR5,1,GR5
11
LD GR1,GR3
12
JUMP LOOP
13
NEXT ADDA GR1,Z
14
ST GR1,STR,GR5
15
LAD GR5,1,GR5
16
ST GR5,LEN
17
OUT STR,LEN
18
LAD GR1,STR
19
LD GR2,LEN
20
CALL REV
21
PRT OUT STR,LEN
22
RET
23
I DC 15342
24
Z DC '0'
25
STR DS 5
26
LEN DS 1
27
END
28
;GR1をGR2で割ったときの商をGR3、剰余をGR4に格納
29
DIV LD GR4,GR1
30
LAD GR3,0
31
DLOOP CPA GR4,GR2
32
JMI DFIN
33
SUBL GR4,GR2
34
LAD GR3,1,GR3
35
JUMP DLOOP
36
DFIN RET
37
END
38
;アドレスがGR1、長さがGR2の文字列を逆順に並べ替える
39
;例: 12345 -> 54321
40
REV START
41
PUSH 0,GR3
42
PUSH 0,GR4
43
PUSH 0,GR5
44
LAD GR3,1
45
RPU CPA GR2,GR3
46
JMI RNEXT
47
LD GR4,GR1
48
ADDA GR4,GR3
49
LD GR4,-1,GR4
50
PUSH 0,GR4
51
LAD GR3,1,GR3
52
JUMP RPU
53
RNEXT LAD GR3,1
54
RPO CPA GR2,GR3
55
JMI PFIN
56
POP GR4
57
LD GR5,GR1
58
ADDA GR5,GR3
59
ST GR4,-1,GR5
60
LAD GR3,1,GR3
61
JUMP RPO
62
PFIN POP GR5
63
POP GR4
64
POP GR3
65
RET
66
END