CASL IIの課題(たぶん決定稿)

問題

文字列'ABCD'がDATA番地に入っている。
この文字列を0x1234に変換するプログラムを書け。

僕の考え方

  • REI001
    1. GR1 <= 3
    2. GR3 <= 0
    3. GR7 <= 0
  • LOOP
    1. GR2 <= M(DATA+GR1)
    2. GR2 <= GR2 AND M(H000F)
    3. GR2 <= GR2<<0+GR3
    4. GR7 <= GR7+GR2
    5. GR3 <= GR3+M(D0004)
    6. GR1 <= GR1-M(D0001)
    7. FRが負なら PR<=FIN
    8. PR <= LOOP
  • FIN
    1. GR7 => M(ANS)

僕の回答

REI001  START
        LAD     GR1,3
        LAD     GR3,0
        LAD     GR7,0
LOOP    LD      GR2,DATA,GR1
        AND     GR2,H000F
        SLL     GR2,0,GR3
        ADDL    GR7,GR2
        ADDL    GR3,D0004
        SUBL    GR1,D0001
        JMI     FIN
        JUMP    LOOP
FIN     ST      GR7,ANS
        RET
DATA    DC      'ABCD'
D0001   DC      1
D0004   DC      4
H000F   DC      #000F
ANS     DS      1
        END