クロック周波数の定義を追加
[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