東京理科大学 infoserv[更新日]1999.04.30


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

〔プログラムの説明〕

副プログラム REVRS は,16 ビットからなるビット列の並びの順序を逆にする。

(1) ビット列は,主プログラムから,GR0 に格納されて渡される。

(2) 並びの順序を逆にしたビット列は,GR0 に格納して,主プログラムに戻す。

図1 副プログラムREVRSの実行例

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

〔プログラム〕
(行番号)
01  REVRS START                ;
02        PUSH    0,GR1        ; レジスタの退避
03        PUSH    0,GR2        ;
04        ST      GR0,WORK     ; 元のビット列 → GR1
05        LD      GR1,WORK     ;
06        LEA     GR2,16       ;ループカウンタ
07        LEA     GR0,0        ;結果のビット列の初期化
08        LEA     GR1,0,GR1    ;
09  LOOP  JZE     FIN          ;残りのビットはすべて0
10        JPZ     OFF          ;左端のビットは0
11        OR      GR0,MASK     ;結果のビット列の左端のビットを1に
12  OFF   LEA     GR2,-1,GR2   ;ループカウンタから1減ずる
13        JZE     FIN1         ;全ビット処理済み
14        SRL     GR0,1        ;結果のビット列を1ビット右にシフト
15        SLL     GR1,1        ;元のビット列を1ビット左にシフト
16        JMP     LOOP         ;
17  FIN   SRL     GR0,-1,GR2   ;結果のビット列を未処理ビット数だけシフト
18  FIN1  POP     GR2          ; レジスタの復元
19        POP     GR1          ;
20        RET                  ;
21  MASK  DC      #8000        ;
22  WORK  DS      1            ;
23        END                  ;

設問1 主プログラムから,ビット列 1101 0111 0100 0000 が渡されたとき,説明文中の に入れる正しい答えを,解答群の中から選べ。

(1) 16 行目の JMP 命令を,3 回目に実行する時点での GR0 の内容は である。

(2) 17 行目の SRL 命令を実行する時点での GR2 の内容は である。

a に関する解答群

ア 0000 0000 0000 0110    イ 0011 0000 0000 0000

ウ 0110 0000 0000 0000    エ 1100 0000 0000 0000

b に関する解答群

ア 3    イ 4    ウ 6    エ 7

設問2 連続する N 語(N≧1)を 16×N ビットからなるビット列とみなす。この 16×N ビットの並びの順序を逆にして,元の N 語に格納する副プログラム REVRSN を, 副プログラム REVRS を使用して作成した。

(1) 連続する N 語の先頭アドレスは,GR1 に格納されて,主プログラムから渡される。

(2) 語数 N は,GR0 に格納されて,主プログラムから渡される。

図2 副プログラムREVRSNの実行

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

REVRSN  START                  ; 
        PUSH     0,GR1         ;
        PUSH     0,GR2         ;
        ST       GR0,WORK1     ;
        LEA      GR2,-1,GR1    ; 最終語のアドレス → GR2
        ADD      GR2,WORK1     ;
LOOP    LD       GR0,0,GR1     ;
        CALL     REVRS         ;
        ST       GR0,WORK1     ;
        LD       GR0,0,GR2     ;
        CALL     REVRS         ;
        ST       GR0,0,GR1     ;
          ;
        ST       GR0,0,GR2     ;
        LEA      GR1,1,GR1     ;
        LEA      GR2,-1,GR2    ;
        ST       GR1,WORK1     ;
        CPA      GR2,WORK1     ;
          ;
        POP      GR2           ;
        POP      GR1           ;
        RET                    ;
WORK1   DS       1             ;
        END                    ;

解答群

ア JNZ LOOP       イ JPZ LOOP       ウ JZE LOOP

エ LD GR0,0,GR1    オ LD GR0,0,GR2    カ LD GR0,WORK1

キ LEA GR0,0,GR1    ク LEA GR0,0,GR2    ケ LEA GR0,WORK1 <


東京理科大学 infoserv 戻る 次頁:問15