;２０１８年平成３０年度春の試験問題
;数字からなる文字列を数値に変換する
;たとえば、文字列'567' を　数値 567 に変換する
MAIN START
  LAD GR1,MOZI
  LD GR2,LEN
  CALL DTOB
  ST GR0,VAL
  RET
MOZI DC '40567'
LEN DC 5
VAL DS 1
  END
;-------------
DTOB START
  RPUSH
  ADDL GR2,GR1
  LAD GR0,0     ; 戻り値の初期化
LP CPL GR1,GR2  ; 変換終了？
  JZE FIN
  LD GR4,0,GR1  ; 数字一文字の取り出し
  SUBL GR4,='0' ; 一桁を数値に変換
  SLL GR0,1     ; GR0 を１０倍してGR4を加算
; 左１シフトして２倍となる。
  LD GR5,GR0    :一時的にGR5に格納
  SLL GR5,2     ; 問題 a 答え オ
;２倍した後、４倍したので８倍となった。
  ADDL GR0,GR5
;２倍の値GR0と８倍の値GR5を加算してGR0は１０倍となる。
  ADDL GR0,GR4
  LAD GR1,1,GR1
  JUMP LP
FIN RPOP
  RET
  END
