valgrindのオプションを変更
[YACASL2.git] / as / casl2lib / src / l2str.casl
1 ;;; 符号なし整数を文字列に変換する。
2 ;;; 符号なし整数を文字列に変換する。
3 ;;; 入力 GR1:符号なし整数 G2:変換した文字列を格納するメモリーの先頭アドレス
4 ;;; 出力 GR0:文字列の長さ (同上)
5 ;;; 依存プログラム: DIVL, REV
6 L2STR   START
7         PUSH    0,GR1
8         PUSH    0,GR4
9         XOR     GR0,GR0         ; GR0 <- 0
10         LD      GR4,GR2         ; GR4 <- GR2
11         PUSH    0,GR2           ; GR2の保存
12         LAD     GR2,10          ; GR2 <- 10。10進数の 10
13 LOOP    LD      GR1,GR1         ; ループ先頭。GR1をテスト
14         JZE     SRT             ; GR1が0の場合、ループ終了
15         CALL    DIVL            ; GR1とGR2の、商をGR0、剰余をGR3に格納
16         ADDL    GR3,='0'        ; GR3を文字に変換
17         ST      GR3,0,GR4       ; GR4のアドレスに、GR3を格納
18         LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
19         LD      GR1,GR0         ; GR0の商をGR1にコピー
20         JUMP    LOOP            ; ループ終端
21 SRT     POP     GR2             ; GR2の復元
22         LD      GR1,GR2         ; GR1に文字列のアドレスを格納
23         SUBL    GR4,GR2         ; GR4 <- GR4 - GR2
24         LD      GR2,GR4         ; GR2 <- GR4
25         CALL    REV             ; 文字列を逆順に並べ替え
26         LD      GR0,GR2         ; GR0 <- GR4 文字列の長さを格納
27         POP     GR4
28         POP     GR1
29         RET
30         END