c 大豆生田利章 2014 2014 年度 2J マイコン後期中間試験問題 2014/11/28 [注意事項] › 筆記用具のみ使用可能である. (電卓・算盤および携帯電話の電卓機能等の使用は不可. ) › 解答用紙 1 ページ目先頭に学籍番号・氏名を,2 ページ目以降の右上に学籍番号を記入 する. › 氏名・学籍番号の無いもの,解答欄を間違えたもの,解答の順番を変更したものは 0 点 とする. › 解答を書きなおす時は,以前の解答は丁寧かつ綺麗に消して跡が残らないようにする. › 特に断らない限り,マイコンとして H8/3062BF を使用するものとする. › 末尾の付録に H8 マイコンのアセンブリ言語の抜粋が載せてある. 問題 1(3 点× 10)図 1 はサブルーチン呼び出し時と,メインルーチン復 帰時のスタック,プログラムカウンタ (PC) およびスタックポインタ (SP) の関係を図示したものである.図中 【1】 から 【10】にあてはま る数値を選択肢(ア)から(コ)の中から選べ.複数の解答が同じにな る場合もある. 図 1: 選択肢: 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 2 (ア) H’000826 (イ) H’000828 (ウ) H’00082A (エ) H’000930 (オ) H’000940 (カ) H’000942 (キ) H’FFFEFA (ク) H’FFFEFC (ケ) H’FFFEFE (コ) H’FFFF00 問題 2(5 点× 4)リスト 1 は以下の仕様を満たすプログラムである. (出題 の都合上,一部コメントを省略している)このプログラムに関して,以 下の問いに答えよ.なお,試験問題で与えられていない仕様に関して は,リスト 1 と矛盾しない範囲内において適宜判断するものとする. • ポート A から入力した数値に応じて,ポート 4 に接続した 7 セグ メント LED を点灯させる. • ポート A からの入力の上位 4 ビットは無視する. • 入力数値と出力パターンは図 2 に示す.H’0A から H’0F のとき はすべての LED を消灯する. • 以上の動作を無限ループで繰り返す. 図 2: プログラムリスト 1: 2 PADDR . CPU . EQU 3 4 PBDDR P4DDR . EQU . EQU H ’ EE00A H ’ EE003 5 PADR . EQU H ’ FFFD9 ; VPT <-> I / O board VP3 1 300 HA H ’ EE009 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 6 7 8 9 10 11 12 13 14 15 P4DR . EQU H ’ FFFD3 ; VPD <-> I / O board VP1 . SECTION PROG , DATA , LOCATE =H ’00000 . DATA . L RESET . SECTION C , DATA , LOCATE =H ’01000 ;変 換 テ ー ブ ル ( 固 定 デ ー タ ) TBL : . DATA . B H ’77 , H ’7 C ,H ’39 , H ’5 E ,H ’79 , + H ’71 , H ’7 D ,H ’76 , 【 4 】 , H ’1 E , + H ’00 , H ’00 , H ’00 , H ’00 , H ’00 , H ’00 . SECTION P , CODE , LOCATE =H ’00800 RESET : MOV . L #H ’ FFFF00 , ER7 ; S P セ ッ ト MOV . B 【1 】 #H ’00 , R0L ; 入 力 ポ ー ト 設 定 20 MOV . B MOV . B MOV . L #H ’ FF , R0L ; 出 力 ポ ー ト 設 定 R0L , @P4DDR ; P 4 は 出 力 #H ’00 , ER1 ; レ ジ ス タ E R 1 ク リ ア 21 【2 】; デ ー タ 入 力 22 AND . B 23 【3 】 24 25 MOV . B JMP 26 . END 16 17 18 19 3 #H ’0 F , R1L ; 下 位 4 ビ ッ ト の み 有 効 R0L , @P4DR ;7 セ グ メ ン ト 表 示 @LOOP (1) リスト 1 中の【1】から【3】の空白箇所を埋めるのに適切な命令 を解答用紙に記入せよ. (2) リスト 1 中の【4】に当てはまる 16 進数を解答用紙に記入せよ. 問題 3(5 点× 4)リスト 2 は以下の仕様を満たすサブルーチンである. (出 題の都合上,一部コメントを省略している) • メモリ上のデータの総和を求める. • データはメモリ上連続した領域に記憶されているものとする. . • データのサイズは 8 ビット(1 バイト)である. • サブルーチン呼び出し時にはレジスタ ER0 に先頭のデータのア ドレスを,レジスタ R1L にデータの個数を格納する. • データの総和はレジスタ R1 に格納する. このサブルーチンに関して,以下の問いに答えよ.なお,試験問題で与 えられていない仕様に関しては,リスト 2 と矛盾しない範囲内におい て適宜判断するものとする. 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 4 プログラムリスト 2: 1 SUB : PUSH . L MOV . L ER2 #H ’00000000 , ER2 SUB0 : MOV . B 【1 】 【2 】 @ER0 , R2L DEC . B 【3 】 R1L 2 3 4 5 6 7 8 9 10 【4 】 POP . L RTS ER2 (1) リスト 2 中の【1】の空白箇所を埋めるのに適切な命令を選択肢 (a) から (f) の中から選び,その記号を解答用紙に記入せよ. 選択肢: (a) ADD.W E2,R1 (b) ADD.W E2,R2 (c) ADD.W R1,R2 (d) ADD.W R1,E2 (e) ADD.W R2,E2 (f) ADD.W R2,R1 (2) リスト 2 中の【2】の空白箇所を埋めるのに適切な命令を選択肢 (a) から (d) の中から選び,その記号を解答用紙に記入せよ. 選択肢: (a) DEC.L #1,ER0 (b) DEC.L #2,ER0 (c) INC.L #1,ER0 (d) INC.L #2,ER0 (3) リスト 2 中の【3】の空白箇所を埋めるのに適切な命令を選択肢 (a) から (f) の中から選び,その記号を解答用紙に記入せよ. 選択肢: (a) BEQ SUB (b) BEQ SUB0 (c) BRA SUB (d) BRA SUB0 (e) BNE SUB (f) BNE SUB0 (4) リスト 2 中の【4】の空白箇所を埋めるのに適切な命令を選択肢 (a) から (e) の中から選び,その記号を解答用紙に記入せよ. 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 5 選択肢: (a) MOV.W E0,R1 (b) MOV.W E1,R1 (c) MOV.W E2,R1 (d) MOV.W R0,R1 (e) MOV.W R2,R1 問題 4(3 点× 10)リスト 3 は以下の仕様を満たすプログラムである. (出 題の都合上,一部コメントを省略している)このプログラムに関して, 以下の問いに答えよ.なお,試験問題で与えられていない仕様に関し ては,リスト 3 と矛盾しない範囲内において適宜判断するものとする. また,Pmn はポート m の第 n ビットを表す. • P62 が 0 になると,8 ビットカウンタの動作を開始する. • 100 ミリ秒ごとにカウンタの値を増やす. • カウンタの値がオーバフローしたときは H’00 に戻って,動作を 継続する. • カウンタの値はポート B に出力する. • カウンタ動作中に P67 が 0 になったときは,カウンタを停止する. • カウンタ停止中に,P62 が 0 になったときはカウンタの動作を再 開する. • カウンタ動作中は P60 を 0 にし,P61 を 1 にする. • カウンタ停止中は P61 を 0 にし,P60 を 1 にする. プログラムリスト 3: . CPU 300 HA MSTCR P6DDR . EQU . EQU H ’ EE01C ; ス タ ン バ イ 機 能 の 制 御 H ’ EE005 PBDDR P6DR PBDR . EQU . EQU . EQU H ’ EE00A H ’ FFFD5 ; マ イ コ ン ボ ー ド 上 H ’ FFFDA ; VPE <-> I / O board VP2 1 2 3 4 5 6 . SECTION PROG , CODE , LOCATE =H ’00000 . DATA . L RESET 7 8 9 10 11 RESET : . SECTION P , CODE , LOCATE =H ’00800 MOV . L #H ’ FFFF20 , ER7 ; S P 設 定 MOV . B #H ’ F8 , R0L 13 MOV . B MOV . B R0L , @MSTCR #H ’03 , R0L ; ポ ー ト 6 入 出 力 設 定 14 MOV . B R0L , @P6DDR ; P60 , P61 出 力 12 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 MOV . B MOV . B 15 16 17 18 19 #H ’ FF , R0L ; 出 力 ポ ー ト 設 定 R0L , @PBDDR ; PB 出 力 ;初 期 設 定 MOV . B #H ’00 , R0L ; カ ウ ン タ 初 期 値 【 1 】 ; P60 1 【 2 】 ; P61 1 20 21 ;ス タ ー ト 待 ち 22 WAIT : 24 MOV . B R0L , @PBDR ; カ ウ ン タ 出 力 【 3 】 ; P62 check 【4 】 25 【 5 】 ; P60 0 26 【 2 】 ; P61 1 23 27 28 29 ;カ ウ ン ト 動 作 COUNT0 : MOV . W COUNT1 : JSR #D ’100 , R1 ;1 ミ リ 秒 × 1 0 0 @TIMER ;1 ミ リ 秒 タ イ マ ー 30 【 6 】 ; P67 check 31 【7 】 32 DEC . W #1 , R1 ; 残 り 回 数 BNE COUNT1 【8 】; カ ウ ン ト ア ッ プ 33 34 35 36 37 STOP : MOV . B R0L , @PBDR ; カ ウ ン タ 出 力 【9 】 【 1 】 ; P60 1 38 【 1 0 】 ; P61 0 39 JMP 40 41 42 43 44 TIMER1 : NOP ; 時 間 調 整 DEC . L #1 , ER6 ; E R 6 デ ク リ メ ン ト 47 48 . END 46 @WAIT ;1 ミ リ 秒 タ イ マ ー サ ブ ル ー チ ン TIMER : PUSH . L ER6 MOV . L #D ’3125 , ER6 ; タ イ マ ー セ ッ ト BNE POP . L RTS 45 6 TIMER1 ; E R 6 は 0 で な い ER6 リスト 3 中の【1】から【10】の空白箇所を埋めるのに適切な命令を選 択肢(ア)から(ホ)の中から選び,その記号を解答用紙に記入せよ. なお,試験問題で与えられていない仕様に関しては,リスト 3 と矛盾 しない範囲内において適宜判断するものとする. 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 選択肢: (ア) BCLR #0,@P6DR (イ) BCLR #1,@P6DR (ウ) BCLR #2,@P6DR (エ) BCLR #7,@P6DR (オ) BEQ COUNT0 (カ) BEQ COUNT1 (キ) BEQ STOP (ク) BEQ WAIT (ケ) BNE COUNT0 (コ) BNE COUNT1 (サ) BNE STOP (シ) BNE WAIT (ス) BRA COUNT0 (セ) BRA COUNT1 (ソ) BRA STOP (タ) BRA WAIT (チ) BSET #0,@P6DR (ツ) BSET #1,@P6DR (テ) BSET #2,@P6DR (ト) BSET #7,@P6DR (ナ) BTST #0,@P6DR (二) BTST #1,@P6DR (ヌ) BTST #2,@P6DR (ネ) BTST #7,@P6DR (ノ) DEC.B R0L (ハ) DEC.W #1,R1 (ヒ) DEC.W #2,R1 (フ) INC.B R0L (へ) INC.W #1,R1 (ホ) INC.W #2,R1 7 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 付録:アセンブリ言語命令抜粋 本付録では H8 マイコンのアセンブリ言語の命令の抜粋を載せる. 最初に表 1 にアドレッシングモードを示す. 名称 表 1: アドレッシングモード 記号 記述例 レジスタ直接 Rn MOV.B R0L,R0H イミディエイト #xx MOB.B #H’00,R0L 絶対 @aa MOV.B R0L,@H’EE009 レジスタ間接 ディスプレースメント付き @ERn @(d,ERn) MOV.B @ER1,R0H MOV.B @(HENKAN,ER1),R0L レジスタ間接 プリデクリメント・レジス @-ERn MOV.W R0,@-ER7 @ERn+ MOV.L @ER4+,ER0 @(d,PC) BNE TIMER @@aa JMP @@H’10 タ間接 ポストインクリメント・レ ジスタ間接 プログラムカウンタ相対 メモリ間接 8 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 9 表 2 に各命令で使用可能なアドレッシングモードの一覧を示す.アドレッ シングモードの記号は表 1 に示したものである. 表 2: 各命令で使用可能なアドレッシングモード 命令 MOV POP PUSH ADD CMP SUB INC DEC AND OR XOR NOT シフト命令 ビット操作命令 Bcc, BSR JMP, JSR RTS RTE LDC #xx Rn @ERn @(d,ERn) @ERn+ @-ERn @aa @(d,PC) @@aa – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – W – – – – – – – – – – – – – – – – – W – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – B – – – – B – – – W – – – W – – – – – – – – – – – – – – – – – – – – – 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 10 表 3 に命令実行によるフラグの変化を示す.表中, は命令実行結果にし たがってフラグが変化することを,0 は常に 0 になることを,– は命令実行 による変化がないことを示す. 表 3: 命令実行によるフラグの変化 命令 N Z MOV, POP, PUSH V C 0 – ADD, SUB, CMP INC, DEC – AND, OR, XOR, NOT 0 – SHAL SHAR, SHLL, SHLR, ROTL, ROTR 0 BSET, BCLR, BNOT – BTST – Bcc, JMP, BSR, JSR, RTS – – – – – – – – – – – – – LDC RTE NOP 以下に各種命令の概要を示す.レジスタ d はディスティネーションオペラ ンドのレジスタ,レジスタ s はソースオペランドのレジスタを表わす. 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 11 表 4: アセンブリ言語命令の概要 命令 サイズ 動作 MOV B/W/L レジスタ s→ レジスタ d 記述例 メモリ → レジスタ d MOV.B R0L,R0H MOV.B #H’5F,R0L MOV.B @ER4,R0L レジスタ s→ メモリ MOV.B R0L,@SW データ → レジスタ d PUSH W/L レジスタ → スタック PUSH.L ER0 POP W/L スタック → レジスタ POP.L ER6 ADD B/W/L レジスタ d + レジスタ s → レジスタ d レジスタ d + データ → レジスタ d SUB INC DEC CMP B/W/L レジスタ d − レジスタ s → レジスタ SUB.B R1L,R2L W/L レジスタ d − データ → レジスタ d SUB.L #1,ER6 B W/L レジスタ +1 → レジスタ レジスタ + 1 → レジスタ INC.B R0H INC.L #1,ER1 レジスタ + 2 → レジスタ INC.L #2,ER0 レジスタ − 1 → レジスタ レジスタ − 1 → レジスタ DEC.B R0L DEC.L #1,ER6 レジスタ − 2 → レジスタ DEC.L #2,ER5 レジスタ d − レジスタ s CMP.B R0H,R0L CMP.W #H’FFFF,E0 B W/L B/W/L レジスタ − データ NEG B/W/L 0 − レジスタ → レジスタ AND B/W/L レジスタ d ∧ レジスタ s → レジスタ d データ ∧ レジスタ d → レジスタ d OR XOR ADD.B R1L,R2L ADD.W #D’60000,R0 B/W/L B/W/L レジスタ d ∨ レジスタ s → レジスタ d NEG.B R0L AND.W R1,R0 AND.B #H’0F,R1L OR.B R1H,R1L データ ∨ レジスタ d → レジスタ d OR.B #H’F0,R0H レジスタ d ⊕ レジスタ s → レジスタ d XOR.B R0H,R0L データ ⊕ レジスタ d → レジスタ d XOR.B #H’FF,R0L NOT B/W/L ¬ レジスタ → レジスタ SHLL B/W/L レジスタの中身を論理左シフトする SHLL.B R1H NOT.W E0 SHLR B/W/L レジスタの中身を論理右シフトする SHLR.W E1 ROTL B/W/L レジスタの中身を左ローテートする ROTL.B R0L ROTR B/W/L レジスタの中身を右ローテートする ROTR.B R0H SHAL B/W/L レジスタの中身を算術左シフトする SHAL.W R0 SHAR B/W/L レジスタの中身を算術右シフトする SHAR.L ER1 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 12 表 5: ビット操作命令 命令 動作 記述例 BSET レジスタまたはメモリ内の 1 ビットを 1 にする BSET #0,R0H BCLR レジスタまたはメモリ内の 1 ビットを 0 にする BCLR #1,@P6DR BNOT レジスタまたはメモリ内の 1 ビットを反転する BNOT #5,@H’FFFC6 BTST レジスタまたはメモリ内の 1 ビットをテストする BTST #7,R0L 操作対象は 8 ビットレジスタおよび 8 ビットデータに限る. 表 6: 条件付き分岐命令(Bcc) 分岐条件 (フラグ) 命令 BNE 等しくない 記述例 Z=0 BNE TIMER BEQ 等しい Z=1 BEQ LOOP BCC 以上(符号なし) C=0 BCC L1 BCS 未満(符号なし) C=1 BCS S5 BHI 超過(符号なし) C ∨Z =0 BHI S1 4 BLS 以下(符号なし) C ∨Z =1 BLS SW1 BGE 以上(符号付き) N ⊕V =0 BGE LOP BLT 未満(符号付き) N ⊕V =1 BLT AD BGT 超過(符号付き) Z ∨ (N ⊕ V ) = 0 BGT CHK BLE 以下(符号付き) Z ∨ (N ⊕ V ) = 1 BLE RT 命令 表 7: 無条件分岐命令 動作 BRA 無条件で分岐 BRA LOOP JMP 無条件で分岐 JMP @LOOP BSR サブルーチンへ分岐 BSR TIMER JSR サブルーチンへ分岐 JSR @TIMER RTS サブルーチンから戻る 記述例 RTS 2014 年度 2J マイコン後期中間試験問題 c 大豆生田利章 2014 命令 サイズ 表 8: システム制御命令 動作 LDC B レジスタ → CCR データ → CCR 13 記述例 LDC.B #0,CCR W メモリ → CCR RTE – 例外処理ルーチンから復帰する RTE NOP – 何もしない NOP 表 9 にアセンブラ制御命令の例を示す. 命令 .CPU .SECTION .EQU .BEQU .RES .DATA .END .EXPORT 表 9: アセンブラ制御命令の例 機能 記述例 使用 CPU の指定 セクションの宣言 .CPU 300HA .SECTION P,CODE,LOCATE=H’00100 シンボル値の設定 P6DR .EQU H’FFFD5 ビットデータ名の設定 D SET .BEQU 2,P6DR 整数データ領域確保 整数データ確保 .RES.B 1 .DATA.B H’0A ソースプログラムの終了 .END 外部定義シンボルの宣言 .EXPORT timer 以下余白(メモ用)
© Copyright 2024 ExpyDoc