![]()
令和元年 秋期 基本情報技術者 午後 問12
問12 CASL次のアセンブラプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。 〔プログラム1の説明〕 符号が同一である二つの 16 ビットのパック 10 進数を加算する副プログラム ADDP1 である。 本問では,パック 10 進数は,3 桁の 10 進数の各桁をそれぞれ 4 ビットで表現し, 最下位の 4 ビットに符号として,正又は 0 の場合は 1100 を, 負の場合は 1101 を付与する数値表現とする。10 進数 246 を, パック 10 進数で表現した例を,図1に示す。
![]() 図1 1Ø 進数 246 のパック 1Ø 進数表現 符号が同一である二つのパック 10 進数の加算例を,図2に示す。
![]() 図2 符号が同一である二つのパック 1Ø 進数の加算例 (1) 副プログラム ADDP1 は,加算の対象となる符号が同一である二つの 16 ビットの パック 10 進数が,GR1,GR2 に設定されて,呼び出される。 (2) 副プログラム ADDP1 は,加算結果を GRØ に設定して呼出し元に戻る。このとき, 汎用レジスタ GR1 〜 GR7 の内容は元に戻す。ここで,加算において, 10 進数の百の位からの桁上がりは発生しないものとする。 〔プログラム1〕 ADDP1 START RPUSH ST GR1,A ST GR2,B LAD GR3,4 ;ビット数カウンタの初期化 a ST GR1,RESULT ;符号部を退避 LD GR1,A SRL GR1,Ø,GR3 LD GR2,B SRL GR2,Ø,GR3 LOOP AND GR1,=#ØØØF AND GR2,=#ØØØF LAD GRØ,Ø ADDL GR1,GR2 CPL GR1,=1Ø ;1Ø 以上の場合は桁上げ b SUBL GR1,=1Ø LAD GRØ,1 MERGE c OR GR1,RESULT ;中間結果との併合 LAD GR3,4,GR3 CPL GR3,=16 JZE FIN ;終了判定 ST GR1,RESULT ;中間結果を退避 LD GR1,A SRL GR1,Ø,GR3 LD GR2,B SRL GR2,Ø,GR3 ADDL GR1,GRØ JUMP LOOP FIN LD GRØ,GR1 RPOP RET A DS 1 B DS 1 RESULT DS 1 END
a に関する解答群 エ OR GR1,=#ØØØF オ OR GR1,=#FØØØ カ OR GR1,=#FFFF b に関する解答群 エ JOV MERGE オ JZE MERGE
c に関する解答群 エ SRA GR1,Ø,GR3 オ SRL GR1,Ø,GR3 カ SRL GR1,=4
〔プログラム2の説明〕 (1) 副プログラム ADDP2 は,加算の対象となる符号が異なる二つの 16 ビットのパック 10 進数が, GR1,GR2 に設定されて,呼び出される。 (2) 副プログラム ADDP2 は,加算結果を GRØ に設定して呼出し元に戻る。このとき, 汎用レジスタ GR1 〜 GR7 の内容は元に戻す。 〔プログラム2〕 ADDP2 START RPUSH CPL GR1,GR2 d LD GR4,GR1 LD GR1,GR2 LD GR2,GR4 INI ST GR1,A ST GR2,B LAD GR3,4 ;ビット数カウンタの初期化 a ST GR1,RESULT ;符号部を退避 LD GR1,A SRL GR1,Ø,GR3 LD GR2,B SRL GR2,Ø,GR3 LOOP AND GR1,=#ØØØF AND GR2,=#ØØØF LAD GRØ,Ø SUBL GR1,GR2 JPL MERGE e ADDL GR1,=1Ø LAD GRØ,1 MERGE c OR GR1,RESULT LAD GR3,4,GR3 CPL GR3,=16 JZE FIN ;終了判定 ST GR1,RESULT ;中間結果を退避 LD GR1,A SRL GR1,Ø,GR3 LD GR2,B SRL GR2,Ø,GR3 f JUMP LOOP FIN LD GRØ,GR1 CPL GRØ,=#ØØØD JNZ FIN2 LAD GRØ,#ØØØC FIN2 RPOP RET A DS 1 B DS 1 RESULT DS 1 END d に関する解答群 エ JPL INI オ JZE INI e に関する解答群 エ JZE MERGE オ SLL GR1,Ø,GR3 カ SRL GR1,Ø,GR3 f に関する解答群 コ ADDL GR3,GRØ オ SUBL GR1,=1 カ SUBL GR1,GRØ
設問3 符号にかかわらず二つの 16 ビットのパック 10 進数を加算できるように, 符号の組合せによって副プログラム ADDP1 と ADDP2 を使い分ける副プログラム ADDP を作成した。 プログラム3中の に入れる正しい答えを,解答群の中から選べ。 〔プログラム3の説明〕 (1) 副プログラム ADDP は,加算の対象となる二つの 16 ビットのパック 10 進数が, GR1,GR2 に設定されて,呼び出される。 (2) 副プログラム ADDP の呼出し元に戻ったとき,加算結果は GRØ に入っている。 〔プログラム3〕 ADDP START LD GRØ,GR1 g SRL GRØ,1 h CALL ADDP1 JUMP FIN P2 CALL ADDP2 FIN RET END g に関する解答群 エ SUBL GR1,=1 オ XOR GRØ,GR2 h に関する解答群 エ JPL P2 オ JZE P2
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ] | ||||