- XOR GR1,GR1 ; GR1:各桁の数値 初期化
- LAD GR2,10 ; GR2:10進数の「10」 初期化
- LAD GR3,0 ; GR3:値の一時格納 初期化
- LAD GR4,0 ; GR4:インデックス 初期化
-STOL CPL GR4,ILEN ; ループ先頭。(GR4 = ILEN)の場合、ループ脱出
- JZE CP ; ↓
- LD GR1,IBUF,GR4 ; GR1に、入力文字列中の次の桁を格納
- CPL GR1,ZERO ; (GR1 < '0')の場合、IOVへジャンプ
- JMI OV ; ↓
- CPL GR1,NINE ; (GR1 > '9')の場合、IOVへジャンプ
+ LAD GR1,IBUF
+ LD GR2,ILEN
+ CALL STR2L
+ JOV FIN
+ JMI FIN
+ LD GR1,GR3
+FIN POP GR3
+ RET
+IBUF DS 5
+ILEN DS 1
+MAXLEN DC 5
+ END
+;;; 10進数の整数を表す文字列を数値に変換
+;;; 数値の範囲は、0から65535
+;;; 入力 GR1: 文字列を格納するメモリーの先頭アドレス
+;;; GR2: 文字列の長さ。最大5けた
+;;; 出力 GR3: 数値
+;;; 文字列が最大長より大きい場合と数値以外の場合は、GR3は#FFFF、OFは1
+;;; 数値以外の場合、OFは1
+;;; 依存プログラム: MULL
+STR2L START
+ PUSH 0,GR1
+ PUSH 0,GR2
+ PUSH 0,GR4
+ PUSH 0,GR5
+ PUSH 0,GR6
+ PUSH 0,GR7
+ XOR GR3,GR3 ; GR3の初期化
+ AND GR2,GR2 ; GR2 = 0の場合、OVへジャンプ
+ JZE OV ; ↓
+ CPL GR2,=5 ; GR2 > 5の場合、OVへジャンプ