平成6年度 秋期 第二種 午後 問10

                        [更新日]1994.11.01
問10 次のアセンブラプログラムの説明及びプログラムを読んで、設問に答えよ。 [プログラムの説明] 主プログラムから与えられた10進数の文字列を、編集して出力する副プログラム EDTOUTである。 (1) 主プログラムは、GR1にパラメタの先頭番地を格納して副プログラムEDTOUT を呼ぶ。パラメタの内容と意味は、次のとおりである。(GR1)はGR1の内容を 表している。 アドレス パラメタ ┌───────────────┐ (GR1)+0│10進数の文字列の先頭アドレス│ ├───────────────┤ +1│10進数の文字列の長さ    │ └───────────────┘ (2) 文字列は"0"〜"9"の文字になる。 (3) 文字列中の各文字は、連続する語の下位8ビットに格納され、上位8ビットには すべて0が入っている。 (4) EDTOUTは文字列に対して次の編集を行った後、その内容を出力する。 ・3けたごとに、位取り(",")を挿入する。 ・18語の出力領域に右詰めにする。 ・位取りを挿入した文字列が18語に満たない場合は、空き領域に間隔文字を詰め る。 ・位取りを挿入した文字列が18語を越える場合は、右から18語の部分だけを出力 する。 例 編集前の文字列 出力する文字列 ┌────┐ ┌──────────────────┐ │1234│ │△△△△△△△△△△△△△1,234│ └────┘ └──────────────────┘ 編集前の文字列 出力する文字列 ┌────────────────┐┌──────────────────┐ │1234567890123456││34,567,890,123,456│ └────────────────┘└──────────────────┘ △:間隔文字を表す [プログラム] EDTOUT START ; LD GR0,0,GR1 ;文字列の先頭アドレスをGR0へ ST GR0,ADDR ; LD GR1,1,GR1 ;文字列の長さをGR1へ ADD GR1,ADDR ; LEA GR1,-1,GR1 ;文字列の最後のアドレス LD GR2,OUTLNG ;出力領域の添字 LEA GR3,3 ;位取りのカウンタ初期化 LOOP LEA GR2,-1,GR2 ;出力領域の最後か? [ a ] ; CPL GR1,ADDR ;文字列の最後か? JMI SPCPAD ; LEA GR3,-1,GR3 ;位取りの判断 [ b ] ; LD GR0,0,GR1 ; LEA GR1,-1,GR1 ; JMP MOVCHR ; RANK [ c ] ; LEA GR3,3 ;位取りのカウンタ再初期化 JMP MOVCHR ; SPCPAD LD GR0,SPACE ; MOVCHR[ d ] ; JMP LOOP ; OUTPUT OUT OUTBUF,OUTLNG ; RET ; ADDR DS 1 ; OUTBUF DS 18 ; OUTLNG DC 18 ; COMMA DC ',' ; SPACE DC ' ' ; END 設問 プログラム中の[ ]に入れる正しい答えを、解答群の中から選べ。 a ,b に関する解答群 ア JMI MOVCHR イ JIM OUTPUT ウ JMI RANK エ JZE MOVCHR オ JZE OUTPUT カ JZE RANK キ JNZ MOVCHR ク JNZ OUTPUT ケ JNZ RANK c ,d に関する解答群 ア LEA GR0,0,GR1 イ LEA GR2,-1,GR2 ウ LD GR0,COMMA エ LD GR0,SPACE オ ST GR1,OUTLNG カ ST GR2,OUTLNG キ ST GR0,OUTBUF,GR1 ク ST GR0,OUTBUF,GR2
戻る 次頁:問11