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