10進数を2進数に変換するプログラム
このアセンブラのプログラムはIN命令によって3桁のレコードに入力された10進数の値を2進数に変換するプログラムです。
INPUT START (1)
RPUSH (2)
IN IBUF,ILEN ;レコードを入力 (3)
LD GR0,ILEN (4)
JMI FIN2 ;ファイルの終わり (5)
LD GR1,=0 ;けた数のカウンタ (6)
LD GR4,=0 ;数値の初期化 (7)
LOOP2 LD GR3,IBUF,GR1 (8)
AND GR3,=#000F ;数字を数値に変換 (9)
LD GR5,GR4;ここから↓4つの命令はGR4を10倍する (10)
SLL GR5,3; (11)
SLL GR4,1; (12)
ADDA GR4,GR5; (13)
ADDA GR4,GR3 (14)
ADDA GR1,=1 (15)
CPA GR1,GR0 (16)
JMI LOOP2 (17)
LD GR0,GR4 (18)
FIN2 RPOP (19)
RET
ILEN DS 1
IBUF DS 256
END
(8)のLOOP2 LD GR3,IBUF,GR1の命令なのですが、「これはIBUFとGR1のアドレスをたしてGR3にその内容を格納する。」という意味であり、その後(14)で10倍されたGR4にたしています。
質問としては、この2進数に変換するプログラムでGR3とGR4の役割を教えていただきたいです。
GR1はレコードの桁数に使われている領域だとわかります。
個人的な解釈としては、GR4はレコードに入力する10進数の数値なのですが、GR4をなぜ10倍すると2進数に変換されるのかなどやGR3の意味がわからないために全く理解できません。
よろしくお願いします。
補足
すみません;わかりました。できるだけ頑張ってみます。