CASLIIの問題が分かりません。
資格の勉強のためCASLIIの参考書を買い問題を解いてるのですが分からないので質問します。
4桁の16進文字列を入力し、それを数値に変換してメモリ上に格納するプログラム。
SAMPL16 START
LD GR1,0BUF
LD GR0,=1000
CALL REVESUB
OUT OBUF,LEN
LET
OBUF DS 4
LEN DC 1
ANS DS 1
END
REVESUB START
PUSH 0,GR1
PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
LAD GR0,0
LAD GR2,0
LOOP SLL GR0,4 ;ここまでの結果を4ビット左シフト
LD GR3,0,GR1 ;1文字取り出し
CPL GR3,='A'
JMI NEXT
ADDL GR3,=9
NEXT AND GR3,C000F
ADDL GR0,GR3
LAD GR1,1,GR1
LAD GR2,1,GR2
CPL GR2,=4
JMI LOOP
POP GR4
POP GR3
POP GR2
POP GR1
RET
C000F DC #000F
END
SLL GR0,4 で4ビットシフトする意味がわかりません。あとLD GR3,0,GR1で1文字だけ取り出せるのですか?取り出すのは下位からですか?
補足
ありがとうございます。 もう少しお伺いしたいのですが、数字→数値変換、数値→文字を別々のサブルーチンにしようとしています。実際どのように作れば良いでしょうか。 ※キーボードから入力の桁数は1桁でもそれ以上でも対応できるようする場合。