電子計算機Ⅱ

科目基礎情報

学校 東京工業高等専門学校 開講年度 2017
授業科目 電子計算機Ⅱ
科目番号 0020 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 1
開設学科 情報工学科 対象学年 4
開設期 前期 週時間数 2
教科書/教材 Webテキスト https://xythos.tokyo-ct.ac.jp/web/j/usr/kosaka/studentreports/index.html
担当教員 小坂 敏文

到達目標

H8CPUを題材にして,マイクロコンピュータの構造,メモリ,I/O,機械語命令の読み込みと連続動作,起動時の動
作,ジャンプ命令の仕組み,スタックとスタックポインタ,サブルーチンコールの仕組みの大枠を理解する。PCと
H8CPUのROMモニタプログラム上で機械語命令を実行させ,動作の仕組みを体験する。C言語をアセンブリ言語に変換し,アセンブリ言語で動作を理解し,アセンブリ言語のプログラムを追跡できるようにする。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
与えられた簡単な問題に対して,それを解決するためのソースプログラムを記述できる。与えられた簡単な問題に対して,解決手順を考え,サンプルプログラムやネット上の情報を取得して,意図通りにマイコン向けアセンブリソースプログラムを作成できる。 与えられた簡単な問題に対して,解決手順のヒントやサンプルプログラムを元に解決するためのマイコン向けCソースプログラムを作成できる。 与えられた簡単な問題に対して,解決手順のヒントやサンプルプログラムを元に解決するためのマイコン向けCソースプログラムを作成できない。
ソフトウェア生成に必要なツールを使い,ソースプログラムをロードモジュールに変換して実行できる。様々な開発環境があることを知っており,それぞれの環境でアセンブリプログラム/Cプログラム作成が出来,アセンブル/コンパイル&実行ができる。 与えられた開発環境(クロス開発環境)でアセンブリプログラム/Cプログラム作成が出来,アセンブル/コンパイル&実行ができる。与えられた開発環境(クロス開発環境)でアセンブリプログラム/Cプログラム作成が出来,アセンブル/コンパイル&実行ができない。
言語処理プロセッサ(コンパイラ,アセンブラ)の特徴を説明できる。言語処理プロセッサ(コンパイラ,アセンブラ)の特徴を説明できる。資料を見ながら,言語処理プロセッサ(コンパイラ,アセンブラ)の特徴を説明できる。資料を見ながらであっても,言語処理プロセッサ(コンパイラ,アセンブラ)の特徴を説明できない。
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 資料を見ながら,ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 資料を見ながらであっても,ソフトウェア開発に利用する標準的なツールの種類と機能を説明できない。
CPUの主要なレジスタの役割を説明できる。 CPUの主要なレジスタの役割を説明できる。 資料を見ながら,CPUの主要なレジスタの役割を説明できる。 資料を見ながらでも,CPUの主要なレジスタの役割を説明できない。
プログラムカウンタとジャンプ命令の関係について説明できる。 プログラムカウンタとジャンプ命令の関係について説明できる。 資料を見ながら,プログラムカウンタとジャンプ命令の関係について説明できる。 資料を見ながらでも,プログラムカウンタとジャンプ命令の関係について説明できない。
スタック・スタックポインタとサブルーチンジャンプ復帰の仕組みが説明できる。 スタック・スタックポインタとサブルーチンジャンプ復帰の仕組みが説明できる。 資料を見ながら,スタック・スタックポインタとサブルーチンジャンプ復帰の仕組みが説明できる。 資料を見ながらでも,スタック・スタックポインタとサブルーチンジャンプ復帰の仕組みが説明できない。
C言語プログラムからアセンブリプログラムの関数が使える。アセンブリプログラムから,C言語プログラムの関数が使える。 C言語プログラムからアセンブリプログラムの関数が使える。アセンブリプログラムから,C言語プログラムの関数が使える。 資料を見ながら,C言語プログラムからアセンブリプログラムの関数が使える。アセンブリプログラムから,C言語プログラムの関数が使える。 資料を見ながらでも,C言語プログラムからアセンブリプログラムの関数が使える。アセンブリプログラムから,C言語プログラムの関数が使えない。
プログラムのメモリ配置と変数領域のメモリ割り当て,スタータップルーチンの役割を説明できる。 プログラムのメモリ配置と変数領域のメモリ割り当て,スタータップルーチンの役割を説明できる。 資料を見ながら,プログラムのメモリ配置と変数領域のメモリ割り当て,スタータップルーチンの役割を説明できる。 資料を見ながらでも,プログラムのメモリ配置と変数領域のメモリ割り当て,スタータップルーチンの役割を説明できない。
タスクスイッチの仕組みを説明できる。 タスクスイッチの仕組みを説明できる。 資料を見ながら,タスクスイッチの仕組みを説明できる。 資料を見ながらでも,タスクスイッチの仕組みを説明できない。

学科の到達目標項目との関係

教育方法等

概要:
マイクロコンピュータを例に取り,CPUのレジスタ構成と動作をアセンブリ言語を交えて学習する。(ただしアセンブリ言語の修得は目的としない。)最初にアセンブラ,コンパイラを用いたクロス開発を体験する。次にプログラムカウンタとジャンプ命令,スタック・スタックポインタとサブルーチンの動作を理解する。また,C言語プログラムの関数がどのように呼び出されるかアセンブリ言語で観察する。さらに,スタートアップルーチンの役割を学び,プログラムのメモリ配置,メモリの割当を学ぶ。最後にOSを展望し,タスクスイッチプログラムを作成する。
授業の進め方・方法:
授業中においては自分でWebテキストのサンプルプログラムの解説を読み,要点を理解しながら30個ほどの課題を1人1台のPCとH83048foneマイコンセットを用いて演習する。クロスアセンブル・リンク・リロケート・実行オブジェクト転送・実行までを行い,その後アセンブリプログラムのニーモニックを1行ずつ実行してCPUの動作を学ぶ。ジャンプ命令,スタック操作,サブルーチンコール・リターン命令時の各レジスタの動きを観察し動作を学ぶ。C言語プログラムのコンパイル時にアセンブリプログラムを出力させ,Cの関数呼び出しがどのように行われているか観察する。スタートアップルーチンの役割を学び,プログラムのメモリ配置,メモリの割当を学ぶ。最後にOSを展望し,タスクスイッチプログラムを作成する。
注意点:
Webテキストを読む時は,要点に自分で「気づく」ことが大事である。そのため,気づいた要点をレポートにまとめとしての記述してもらう。課題の演習では,課題内容をよく読むこと。課題にはどのように出力するか指示がある場合があるので,それに従うこと。課題の実行結果については正しいかどうか検討してから提出すること。課題の提出期限を守ることは当然だが,遅れそうな時は放課後も使って課題演習を行うこと。なお,課題がはやく終わってしまった場合は,自分のペースで先に進んでも良い。定期試験前には過去の問題を試験本番と同じように解いてみて,自分の理解度が正確であったかどうか,ケアレスミスを犯しやすいところはどこかよく検討してから本番に臨むこと。

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ガイダンス。H8CPUを例としたマイクロコンピュータのレジスタ構成と動作原理を座学で学ぶ。 マイクロコンピュータのレジスタ構成と動作原理を理解し,次回から実際に検証するする授業構成を理解し,説明できる。
2週 H8マイクロコンピュータ上で,PCのターミナル画面上に表示するモニタプログラムを動かし,ニーモニクで簡単なプログラムを入力し1命令毎に実行し,各レジスタの変化が見えることを体験する。 モニタプログラム上でニーモニクを使って簡単なプログラムを入力し1命令ごとの実行で,汎用レジスタの変化を観察し,モニタプログラムの画面表示について説明できる。
3週 モニタプログラムを用い,メモリ上に置かれた2変数の加算減算をニーモニクで記述し,1命令毎に実行し,動作を確認する。 モニタプログラム上でニーモニクを使ってメモリ上に置かれた2変数の加算減算プログラムを入力し1命令ごとの実行で,汎用レジスタ,プログラムカウンタの変化を観察し,説明できる。
4週 モニタプログラムを用い,ジャンプ命令のあるプログラムをニーモニクで記述し,1命令毎に実行し,動作を確認する。 モニタプログラム上でニーモニクを使ってジャンプ命令のあるプログラムを入力し1命令ごとの実行で,プログラムカウンタの変化を観察し,ジャンプ命令との関連を説明できる。
5週 モニタプログラムを用い,スタック操作命令のあるプログラムをニーモニクで記述し,1命令毎に実行し,動作を確認する。 モニタプログラム上でニーモニクを使ってスタック操作命令のあるプログラムを入力し1命令ごとの実行で,スタックポインタとスタック領域の変化を観察し,動作を説明できる。
6週 モニタプログラムを用い,サブルーチンのあるプログラムをニーモニクで記述し,1命令毎に実行し,動作を確認する。 モニタプログラム上でニーモニクを使ってサブルーチンのあるプログラムを入力し1命令ごとの実行で,スタックポインタとスタック領域の変化を観察し,サブルーチンコール命令・リターン命令の動作を説明できる。
7週 コンパイラオプションにより,Cプログラムからアセンブリソースを出力し,アセンブリ言語プログラムの動作を追跡する。 コンパイラオプションにより,Cプログラムからアセンブリソースを出力し,アセンブリ言語プログラムの動作を追跡し,各命令の意味を簡単に説明できる。
8週 コンパイラオプションにより,自作関数および関数呼び出しのあるCプログラムからアセンブリソースを出力し,アセンブリ言語プログラムの動作を追跡する。特に引数の引き渡しと関数の戻り値の引き渡しに着目する。 コンパイラオプションにより,自作関数および関数呼び出しのあるCプログラムからアセンブリソースを出力し,アセンブリ言語プログラムの動作を追跡できる。特に引数の引き渡しと関数の戻り値の引き渡しについて観察し,動作を説明できる。
2ndQ
9週 簡単なアセンブリ言語のプログラムをエディタで記述し,クロスアセンブラを用いてロードモジュールを作成し,H8マイコンのモニタ上で動作させる。 簡単なアセンブリ言語のプログラムをエディタで記述し,クロスアセンブラを用いてロードモジュールを作成し,H8マイコンのモニタ上で動作させることが出来,その手順と実行しているプログラムについて説明できる。
10週 メモリ上のある領域のフィル,コピーを行うプログラムをアセンブリ言語で記述し,クロスアセンブラを用いてロードモジュールを作成し,H8マイコンのモニタ上で動作させる。 メモリ上のある領域のフィル,コピーを行うプログラムをアセンブリ言語で記述し,クロスアセンブラを用いてロードモジュールを作成し,H8マイコンのモニタ上で動作させ,その動きについて説明できる。
11週 簡単な掛け算割り算を行うプログラムをアセンブリ言語で記述し,クロスアセンブラを用いてロードモジュールを作成し,H8マイコンのモニタ上で動作させる。 簡単な掛け算割り算を行うプログラムをアセンブリ言語で記述し,クロスアセンブラを用いてロードモジュールを作成し,H8マイコンのモニタ上で動作させ,その動きについて説明できる。
12週 ロケータがオート変数以外の変数で初期値を持つものについて,ROM領域あるいはRAM領域に変数を割り付けた場合,変数の値が変更できなかったり,初期値が設定されなかったりして,プログラムが思い通りの動作が出来ないことを観察する。 ロケータがオート変数以外の変数で初期値を持つものについて,ROM領域あるいはRAM領域に変数を割り付けた場合,変数の値が変更できなかったり,初期値が設定されなかったりして,プログラムが思い通りの動作が出来ないことを観察する。ロケータの役割およびセグメントの意味を説明できる。
13週 スタートアップルーチンが,オート変数以外の変数で初期値を持つものについて,ROM領域の初期値をRAM領域の変数にコピーし,その後,プログラムを意図通りに動くことを学ぶ。 スタートアップルーチンが,オート変数以外の変数で初期値を持つものについて,ROM領域の初期値をRAM領域の変数にコピーし,その後,プログラムを意図通りに動くことを観察し,その動作を説明できる。
14週 タスクスイッチのプログラム例を動作させ,振る舞いを観察し,タスクスイッチの原理を理解する。タスクスイッチのプログラムを自分で作成する。 2タスクのタスクスイッチのプログラム例を動作させ,振る舞いを観察し,タスクスイッチの原理を説明できる。3タスクのタスクスイッチのプログラムを自分で作成し,動作させ,その動作を説明できる。
15週 定期試験(中間試験も含む)
16週

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング与えられた問題に対して、それを解決するためのソースプログラムを記述できる。3
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。3
主要な言語処理プロセッサの種類と特徴を説明できる。2
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。3

評価割合

試験発表相互評価態度ポートフォリオ課題レポート合計
総合評価割合70000030100
基礎的能力0000000
専門的能力70000030100
分野横断的能力0000000