解説
CASL
情報処理技術者試験
過去問

H26年秋期 基本情報技術者 午後問12 解説 設問3

More than 3 years have passed since last update.

MAIN   START

LD GR2,=0 ; 多数字列のカウンタを初期化
LOOP3 IN BUF,ILEN
LD GR0,ILEN
JMI EOF
LD GR3,=0 ; 配列に格納する内容を初期化
LAD GR4,BUF
LOOP4 LD GR5,0,GR4 ; GR5←数字
AND GR5,=#000F ; 数字の数値化
SLL GR3,4 ; 処理済の内容を桁上げ
OR GR3,GR5 ; 空いた右端4ビットに数値を格納
ADDA GR4,=1
SUBA GR0,=1
JNZ LOOP4
ST GR3,ARRAY,GR2 ; 2 進化 10 進数にした数字列を格納
ADDA GR2,=1
JUMP LOOP3
EOF LAD GR1,ARRAY
CALL SORT
LD GR4,=' ' ; 空白文字を設定
LOOP5 LD GR0,0,GR1
LD GR5,=3 ; ループカウンタを設定
LOOP6 LD GR3,GR0
AND GR3,=#000F
OR GR3,=#0030 ; 数値の数字化
ST GR3,BUF,GR5 ; バッファに数字を設定
SUBA GR5,=1
JMI WRITE
SRL GR0,4
JNZ LOOP6
LOOP7 ST GR4,BUF,GR5 ; バッファに空白を設定
SUBA GR5,=1
JMI WRITE
JUMP LOOP7
WRITE OUT BUF,OLEN
LAD GR1,1,GR1
SUBA GR2,=1
JNZ LOOP5
RET
BUF DS 256
ILEN DS 1
OLEN DC 4
ARRAY DS 100
END

SORT START
RPUSH
SUBA GR2,=1 ; ループのカウンタ 1 を設定
LOOP1 LD GR3,GR2 ; ループのカウンタ 2 を設定
LD GR4,GR1 ; GR4←比較する要素のアドレス
LOOP2 LD GR5,0,GR4
CPL GR5,1,GR4 ; 二つの要素を比較
JMI CONT
LD GR6,1,GR4 ; 二つの要素を入れ替え
ST GR5,1,GR4
ST GR6,0,GR4
CONT ADDA GR4,=1
SUBA GR3,=1
JPL LOOP2
SUBA GR2,=1
JPL LOOP1
RPOP
RET
END