基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成16年 秋期 基本情報技術者 午後 問09
問09   CASL

次のアセンブラプログラムの説明及びプログラムを読んで,設問に答えよ。

〔プログラムの説明〕

文字列中の二つ以上連続する間隔文字(以下,空白という)を一つに詰める副プログラム SPCSUP である。

(1) 主プログラムは,先頭に文字列長,その後に文字列が格納された領域の先頭アドレスを GR1 に設定して,副プログラム SPCSUP を呼ぶ。

(2) 副プログラム SPCSUP は,文字列中の空白を詰めた後,文字列長を再設定する。

(3) 副プログラム SPCSUP から戻るとき,汎用レジスタの内容は元に戻す。

実行前
15 I A M A B O Y .
              
実行後
12 I A M A B O Y .

 △ は空白を示す。

基本情報技術者試験


〔プログラム〕

SPCSUP  START
        RPUSH
        LD     GR2,GR1        ; 転送元ポインタ( GR2 )初期化
        LD     GR3,GR1        ; 転送先ポインタ( GR3 )初期化
        LD     GR4,GR1        ; 文字列終了位置ポインタ( GR4 )初期化
          ;  ”
        LD     GR6,=0         ; 連続空白識別フラグ( GR6 )初期化
LP      LAD    GR2,1,GR2
        LD     GR5,0,GR2
        CPL    GR5,=' '
         
        LD     GR6,GR6
        JNZ    CONT
         
        JUMP   CHMOVE
RESET   LD     GR6,=0
CHMOVE  LAD    GR3,1,GR3
        ST     GR5,0,GR3
CONT    CPL    GR2,GR4
        JMI    LP
        SUBL   GR3,GR1        ; 新文字列長の算出
        ST     GR3,0,GR1
        RPOP
        RET
        END

基本情報技術者試験


設問 プログラム中の に入れる正しい答えを, 解答群の中から選べ。

a に関する解答群

ア ADDL GR3,0,GR1    イ ADDL GR4,0,GR1

ウ LAD GR1,1,GR1    エ LAD GR3,1,GR3

オ LAD GR4,1,GR4

b に関する解答群

ア JNZ CHMOVE    イ JNZ CONT    ウ JNZ RESET

エ JZE CHMOVE    オ JZE CONT    カ JZE RESET

c に関する解答群

ア LAD GR2,1,GR2    イ LAD GR3,1,GR3

ウ LD GR6,1      エ LD GR6,=1

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]