CASL2コードで、ローカル以外のラベルを使わないように修正
[YACASL2.git] / as / FUNC / divl0.casl
1 ;;; GR1の値とGR2の値の、商をGR0、剰余をGR3に格納する
2 ;;; 0〜65535の範囲の数値を扱う
3 DIVL    START
4         PUSH    0,GR1
5         AND     GR2,GR2         ; (GR2 = 0)の場合、DYZへジャンプ
6         JZE     DYZ             ; ↓
7         LAD     GR0,0           ; GR0を初期化
8         LD      GR3,GR1         ; GR3 <- GR1
9 DLOOP   CPL     GR3,GR2         ; ループ先頭。(GR3 < GR2)の場合、終了
10         JMI     DFIN            ; ↓
11         SUBL    GR3,GR2         ; GR3 <- GR3 - GR2
12         ADDL    GR0,DONE        ; ↓
13         JUMP    DLOOP           ; ループ終端
14 DYZ     LAD     GR3,#FFFF       ; 強制的にオーバーフローを発生させ、GR3 <- 0
15         ADDL    GR3,=1          ; ↓
16         JUMP    DFIN            ; DFINへジャンプ
17 DFIN    POP     GR1
18         RET
19 DONE    DC      1        
20         END