REI5B START
      LAD    GR0,0        ;各桁を加算するレジスタ
      LAD    GR1,0        ;重みを入れるインデックス
      IN     BUFF,LEN     ;文字の入力
      LD     GR2,LEN      ;桁数を読み込む
      LAD    GR2,-1,GR2   ;制御変数をデクリメント
      CPA    GR2,=0       ; 0と比較
      JZE    SAIGO        ;入力した文字が1桁のとき
YOMU  LD     GR3,BUFF,GR2 ;文字の読み込み
      AND    GR3,=#000F   ;マスク処理(数値データへ)
      LD     GR4,WK,GR1   ;桁の重み
      CALL   MULTI        ;乗算処理
      ADDA   GR0,GR4      ;各桁を累算する
      LAD    GR1,1,GR1    ;インクリメント
      LAD    GR2,-1,GR2   ;制御変数のデクリメント
      SLA    GR2,0        ; フラグのセット
      JNZ    YOMU         ; GR2でないときは繰り返し
SAIGO LD     GR3,BUFF     ;先頭の桁の処理
      CPA    GR3,='-'     ;先頭の桁がマイナスか判断
      JZE    MINUS        ;マイナスのときは分岐
      AND    GR3,=#000F   ;プラスのときはマスク処理
      LD     GR4,WK,GR1   ;重みの読み込み
      CALL   MULTI        ;乗算処理
      ADDA   GR0,GR4      ;各桁を累算する
      JUMP   OWARI        ;処理終了
MINUS XOR    GR0,=#FFFF   ;マイナスのときの処理
      ADDA   GR0,=1       ; 1の補数にして1加算
OWARI RET
BUFF  DS     10           ;文字データ格納場所
LEN   DS     1
WK    DC     1,10,100,1000,10000
      END