Microsoft PowerPoint - H2.ppt [互換モード]

Similar documents
PowerPoint Presentation

MP_slide_ja

計算機アーキテクチャ

ソフトウェア基礎技術研修

.,. 0. (MSB). =2, =1/2.,. MSB LSB, LSB MSB. MSB 0 LSB 0 0 P

スライド 1

コンピュータ工学Ⅰ

コンピュータ工学Ⅰ

スライド 1

ex04_2012.ppt

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

スライド 1

スライド 1

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE

PowerPoint プレゼンテーション

また RLF 命令は 図 2 示す様に RRF 命令とは逆に 各ビットを一つずつ 左方向に回転 ( ローテイト ) する命令である 8 ビット変数のアドレスを A とし C フラグに 0 を代入してから RLF A,1 を実行すると 変数の内容が 左に 1 ビットシフトし 最下位ビット (LSB)

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

Microsoft PowerPoint - 7.Arithmetic.ppt

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

Microsoft PowerPoint - 01-VerilogSetup-2019.pptx

PowerPoint プレゼンテーション

コンピュータの仕組み(1)ハードウェア

スライド 1

スライド 1

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

Microsoft Word - 実験4_FPGA実験2_2015

PowerPoint プレゼンテーション

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

Microsoft PowerPoint - 11Web.pptx

Microsoft Word - 19-d代 試é¨fi 解ç�fl.docx

1 ( ) 2 D-A D-A KUE-CHIP2 KUE-CHIP2 KUE-CHIPP2 KUE-CHIP (1) 2.2 D-A KUE-CHIP2 2.1 KUE-CHIP D-A

主記憶の使われ方 システム領域 SP スタックポインタ システム用 スタック用 プログラム起動時に OS によって確 保される (SP が決められる ) プログラム用 メインルーチン プログラム領域 命令コードの列定数 変数用領域サブルーチン命令コードの列 先頭番地は リンク時に OS によって決め

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

計算機アーキテクチャ

Microsoft PowerPoint - ProcML-12-3.ppt

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

C に必要なコンピュータ知識 C はコンピュータの力を引き出せるように設計 コンピュータの知識が必要

UNIX 初級講習会 (第一日目)

プログラミング入門1

JavaプログラミングⅠ

- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな

スライド 1

PowerPoint プレゼンテーション

プログラミング基礎

第 1 回 C 言語講座 1. コンピュータって? だいたいは 演算装置 制御装置 記憶装置 入出力装置から構成されている 演算装置 CPU の一部で実際に計算を行う装置 制御装置 CPU の一部で演算装置や入出力装置 記憶装置の読み書きなどを制御する装置 記憶装置プログラムや情報 データを一時的

PowerPoint Presentation

授業のあとで 情報処理工学 : 第 3 回 10 進数を 16 進数に変換する方法と 16 進数を 10 進数に変換する方法は 標準的な方法でも良いですか? 履修申告は済みましたか? 割り算 方法 ) 54 余り 6 16 ) 3 余り 3 ) 0 第 4 回へ 201

ComputerArchitecture.ppt

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

プログラミング実習I

Microsoft PowerPoint ppt

Microsoft Word - HW06K doc

Microsoft PowerPoint ppt

Microsoft Word - マイコン実験 doc

ex05_2012.pptx

VelilogHDL 回路を「言語」で記述する

Microsoft PowerPoint - OS07.pptx

1 はじめに このアプリケーションは 計算機ハードウェア論 のアセンブリ言語 ( 超簡単命令セット ) の理解を助けるために製作されました 便宜的に機能を追加 削除した箇所があるため このアプリケーション上での動き方が実際のCPUでの動き方と異なる場合があることに留意してください このアプリケーショ

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN

ディジタル回路 第1回 ガイダンス、CMOSの基本回路

マウス操作だけで本格プログラミングを - 世界のナベアツをコンピュータで - プログラムというと普通は英語みたいな言葉で作ることになりますが 今回はマウスの操作だけで作ってみます Baltie, SGP System 操作説明ビデオなどは 高校 情

CASL入門

C プログラミング 1( 再 ) 第 5 回 講義では C プログラミングの基本を学び演習では やや実践的なプログラミングを通して学ぶ

PowerPoint プレゼンテーション

Microsoft Word - 3new.doc

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

1.1 ラベル ラベルはカラム 1 から始まらなければならない ラベルの後にはコロン スペース タブ 改行が続いてよい ラベルはアルファベットかアンダーバーで始まり 英数字 アンダーバー クエスチョンマークを含んでよい ラベルは 32 文字までである デフォルトではこれらは大文字と小文字を区別するが

Microsoft Word - no103.docx

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

Microsoft PowerPoint - 工学ゼミⅢLED1回_2018

Microsoft PowerPoint - 計算機言語 第7回.ppt

ソフトウェア基礎技術研修

目次 1. はじめに 1 2. マルチALUプロセッサ MAP MAP の構成 MAP 命令セットアーキテクチャ 並列 連鎖判定のアルゴリズムについて 5 3. Booth 乗算のアルゴリズム 次 Booth アルゴリズム 次 Bo

Microsoft PowerPoint - Chap2 [Compatibility Mode]

Microsoft PowerPoint - C1(演算と変数).ppt

Microsoft PowerPoint - 11.pptx

メソッドのまとめ

Microsoft PowerPoint - C4(反復for).ppt

PowerPoint プレゼンテーション

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

< B8CDD8AB B83685D>

JavaプログラミングⅠ

スライド 1

講習No.9

※ ポイント ※

【バーコード作成】マニュアル 第1版

出 アーキテクチャ 誰が 出 装置を制御するのか 1

ポインタ変数

3 SIMPLE ver 3.2: SIMPLE (SIxteen-bit MicroProcessor for Laboratory Experiment) 1 16 SIMPLE SIMPLE 2 SIMPLE 2.1 SIMPLE (main memo

ガイダンス 2

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

CommCheckerManual_Ver.1.0_.doc

<chemsherpa-ai の入力について > (1) 発行者 承認者情報 発行者 承認者情報は 必須項目です 会社情報をクリックし 必要事項を入力します 5. 新規にデータを作成する (P.12 参照 ) 承認者情報も入力します (2) 日付の入力日付の入力規則で年月日は " ハイフン " でつ

PowerPoint プレゼンテーション

文法と言語 ー文脈自由文法とLR構文解析2ー

データ収集用 NIM/CAMAC モジュールマニュアル 2006/5/23 目次 クレート コントローラ CC/ NIM ADC 1821 (Seiko EG&G)...3 ADC インターフェイス U デッドタイム

ToDo: 今回のタイトル

CASL入門

PowerPoint プレゼンテーション

Transcription:

力装置はじめに マイクロプロセッサ ( 第 回 ) 担当 : 佐竹純二 情報 知能工学系学生実験サイト http://www.cs.tut.ac.jp/jikken/ 実験の説明資料などは Web 上で公開中 http://www.aisl.cs.tut.ac.jp/~satake/class/ 実験レポートの受け取りはMoodle 上で行う https://moodle.imc.tut.ac.jp/course/view.php?id=285 登録キーは satake23 実験レポートは PDF ファイルで提出すること 2 日程 (p.27 参照 ) 第 回イントロダクション ( 課題 3. 加算 ) 第 3 回応用プログラミング ( 課題 3.3 図形描画, 課題 3.4() メロディ ) 第 2 回基本プログラミング ( 課題 3.2 乗算 ) 第 4 回応用プログラミング ( 課題 3.4(2) メロディ ) コンピュータの利用 出力 ユーザ どのような仕組みで動いているのか? 入力 第 2 回以降は予習 ( プログラムの準備 ) が必須 コンピュータ 3 4 コンピュータ ハードウェア入コンピュータ ソフトウェア入記憶装置処理装出力装置置グムラム6 力装置アプリケーションプロ置記憶装置処出力装システムプログラ理装置5

ンパイラよるプログラムコンパイラよるプログラムコ疑問 ( 今のところの ) 回答 処理装置 (CPU) はプログラム ( ソフトウェア ) をどのように解釈しているのか? コンパイラ, アセンブラと呼ばれるプログラムを変換するプログラムを使う 高級言語によるプログラム 機械語によるプログラム 高級言語によるプログラム アセンブリ言語に 機械語によるプログラム 7 8 ことばの整理 : 機械語 ことばの整理 : 高級言語 CPU が直接理解し実行できる言語のこと プログラムは と の列から構成される CPU ごとに異なる 人間が使いやすいプログラミング言語 C,C++,Java,Perl など CPU ごとに異ならない ( 共通 ) 高級言語によるプログラム アンセパンイブララアセンブリ言語に機械語による高級言語によるアセンブリ言語に機械語によるプログラムプログラムよるプログラムコプログラム アセンブラ9 アセンブことばの整理 : アセンブリ言語 ことばの整理 : コンパイル 機械語を人間にわかりやすくした言語 命令が機械語と ( ほぼ ) 対 に対応 CPU ごとに異なる 高級言語によるプログラム ンパイラよるプログラムコアセンブリ言語に ランパンイブラララ 高級言語によるプログラムを アセンブリ言語によるプログラムに ( または機械語によるプログラムに ) 翻訳すること 機械語による高級言語によるアセンブリ言語に機械語によるプログラムプログラムよるプログラムコプログラム アセ 2 アセンブ

ンパイラよるプログラムコことばの整理 : アセンブル この実験の流れ アセンブリ言語によるプログラムを機械語によるプログラムに翻訳すること. アセンブリ言語によるプログラミング 2. 作成したプログラムのアセンブル ( 手作業 ) 3. 実行 ( 動作の理解 ) 高級言語によるプログラム アセンブラアセンブリ言語に機械語によるアセンブリ言語に機械語によるプログラムプログラム 4 よるプログラムアセンブラ5 3 この実験で用いるハードウェア KUE-CHIP2 の構造 (p.6 図 ) KUE-CHIP2 教育用の8ビットマイクロプロセッサ CPU 8 ビット = バイト 3h 6 進数であることを示す他にも 3H,x3 など 6 KUE-CHIP2 の各部 : バス KUE-CHIP2 の各部 :ALU 入力バス : 入力部分と CPU 内部を結ぶ 出力バス : 出力部分と CPU 内部を結ぶ 演算ユニット (Arithmetic and Logic Unit) 算術演算, 論理演算, アドレスの計算を行う 7 8

KUE-CHIP2 の各部 :ACC KUE-CHIP2 の各部 :IX アキュムレータ (accumulator) 演算に利用するレジスタ.8 ビット 演算対象, 演算結果を保持 インデックスレジスタ (index register) 演算に利用するレジスタ.8 ビット 演算対象, 演算結果を保持 修飾アドレス指定のときのアドレス修飾にも使用 9 2 KUE-CHIP2 の各部 :FLAG KUE-CHIP2 の各部 :PC フラグレジスタ (flag register) 演算 シフト結果により変化.4 ビット - - - - CF VF NF ZF プログラムカウンタ (program counter) 次に実行する命令のメモリ上でのアドレスを保持.8 ビット 桁上がりフラグ桁あふれフラグ負フラグ p.6 図 2 ゼロフラグ 2 22 KUE-CHIP2 の各部 :MAR KUE-CHIP2 の各部 : 内部メモリ メモリアドレスレジスタ メモリ操作の対象とするアドレスを保持. 8ビット 52 バイト. バイト単位の番地指定 プログラム領域 :~255 番地 データ領域 :256 番地 ~5 番地 5 ~ 256 255 ~ FF FF データ領域 プログラム領域 23 p.7 図 3 24

KUE-CHIP2 のアセンブリ言語 プログラム例 (p.25, リスト 2) 命令の種類 :p.8 表 を参照 言語仕様 : p.29~32 付録 A を参照 機械語フォーマット : バイトか 2 バイト p.7 図 4 を参照 アドレス : 2: 3: 4: データ - --- 命令 OUT RLL 2h ACC 常に の内容を出力バッファの内容を論理左回転し 2 という値を番地へ戻るACCに格納する (OBUF),ACCに入れるに出力する機械語によるアセンブリ言語によるプログラム プログラム アセンブラ LD BA オペランド ACC, h ACC 25 26 アセンブル方法 (/4) p.3,a.2 命令セットを参照 LD ACC,h のアセンブル - A B B = :ACC Rsm A = :ACC A sb = m :IX Rotate sm LD A = :IX A B = -: LoaD 即値 ST A B = : STore 直接 (P) SBC A B = : SuB 直接 with (D) Carry B = : 修飾 (P) アセンブル方法 (2/4) p.3,a.2 命令セットを参照 OUT のアセンブル - - - - - - OUT - - - OUTput IN - - - INput RCF - - - Reset CF - B = : 修飾 (D) 27 28 アセンブル方法 (3/4) p.3,a.2 命令セットを参照 RLL ACC のアセンブル A s m Rsm A = RA :ACC ARight sarithmetically m Rotate sm LD A = LA :IX ALeft Arithmetically B LoaD ST RL ARight BLogically STore SBC LL ALeft Logically B SuB with Carry アセンブル方法 (4/4) p.3,a.2 命令セットを参照 BA 2h のアセンブル c c RCF A -Always - - Reset CF SCF VF -on - overflow - Set CF Bcc NZ c on c Not Zero Branch cc Ssm Z A on s Zero m Shift sm 29 3

プログラム例 (p.25, リスト 2) プログラム例 (p.25, リスト 3) アドレス : 2: 3: 4: データ - --- 命令 LD OUT RLL BA オペランド ACC, h ACC 2h アドレス : 2: 3: 4: データ : 5: 命令 LD OUT RLL BA オペランド ACC, h ACC 2h - は か で置き換える ( どちらでもよい ) アセンブル完了 3 32 プログラムの実行 操作方法の補足 第 2.5 節に沿って行う (p.23~27) 注意点 : 電源器とボードを接続してからコンセントに繋ぐことコンセントは机に固定されたものに繋ぐこと ( 転落防止 ) 電源スイッチ横のコンデンサに指をかけないことプログラムの実行前に RESET を押すこと 全員確認できたら次の説明へ ( 次回からグループではなく一人 台で行う ) SSスイッチで実行 さらにSSスイッチを押すと停止, 再開 CLKFRQのダイヤルを回すと実行速度が変化 RESET SELスイッチを操作してACCを表示 SIスイッチでステップ実行 ( 命令ずつ ) SELスイッチを操作してPCを表示 SIスイッチでステップ実行 ( 命令ずつ ) 33 34 命令はどのように実行されるか? 実際に見てみる : リスト (p.2) クロックに沿って実行 クロック 周期分 つの実行フェーズ KUE-CHIP2の各命令は3から5フェーズ P,P: 各命令で共通 P2 以降 : 各命令で異なる p.9 表 2を参照 35 アドレス データ ラベル 命令 オペランド D: EQU 8h D2: EQU 8h ANS: EQU 82h : 64 8 LD ACC,[D] 2: B4 8 ADD ACC,[D2] 4: 74 82 ST ACC,[ANS] 6: F HLT 8: 3 8: FD END プログラムの実行を停止するメモリのプログラム領域 アセンブル結果の D を見たら 8 番地の内容を 6 8h 進表示 だと思う 3ANS D2 D とし番地の番地に, メモリ ACC ( 内容を内容と変数宣言の内容を格納する 8 ACC 番地の内容を, に格納するの内容を加算する初期化のようなもの FDとする) 36

実行のトレース LD ACC,[D] A B Bの部分 p.9 表 2 を参照 実行のトレース LD ACC,[D] ACC IX LD d [d] (d) P P P2 P3 P4 (PC) MAR PC++ (Mem) IR (A) B (PC) MAR PC++ (Mem) A (Mem) MAR (Mem) A : 64 : 8 2: B4... 8: 3 8: FD 37 38 実行のトレース 実行のトレース LD ACC,[D] P: (PC) MAR, PC++ LD ACC,[D] P: (Mem) IR : 64 : 8 2: B4... 8: 3 8: FD 64 : 64 : 8 2: B4... 8: 3 8: FD 39 4 実行のトレース 実行のトレース LD ACC,[D] P2: (PC) MAR, PC++ LD ACC,[D] P3: (Mem) MAR 64 2 : 64 : 8 2: B4... 8: 3 8: FD 64 2 8 : 64 : 8 2: B4... 8: 3 8: FD 4 42

実行のトレース フラグレジスタの働き LD ACC,[D] 3 P4: (Mem) A 64 2 8 : 64 : 8 2: B4... 8: 3 8: FD 桁上がりフラグ (Carry Flag, CF) 演算結果に桁上がりが生じると 桁あふれフラグ (Overflow Flag, VF) 演算結果に桁あふれが生じると 負フラグ (Negative Flag, NF) 演算結果が負になると ゼロフラグ (Zero Flag, ZF) 演算結果がゼロになると p.6 図 2 も参照 43 44 実験課題 3. (p.27) 実験課題 3. 注意 () について 実行開始から実行終了まで, 観測可能なレジスタ, バスをトレース (2)~(6) について ADD 開始前から ADD 終了後まで, フラグレジスタのみをトレース ADD 命令を ADC 命令に変更して, ADC 開始前から ADC 終了後まで, フラグレジスタのみをトレースそれぞれの加算結果も確認 記録すること リスト を利用 6 進数 64,2 進数では? 8 番地に値を入れるには, まず MAR を操作 毎回, まず計算結果を確認 ( 記録 ) すること 6 と b の読み間違いに注意 負の数は 2 の補数表現 + 3-3 45 46 検討事項のポイント 次回 () について 各命令の各フェーズでの動作についてテキスト p.8~22 を参考に図などを使いながら文章で説明すること レポート作成補助 : 図や資料のデータを配布中 http://www.aisl.cs.tut.ac.jp/~satake/class/ (2)~(6) について 各フラグがどのような時に変化するのか, ADD 命令とADC 命令の違いもまとめること 実験課題 3.2 乗算プログラムの作成 符号なし2バイト精度の2 数の積 データを格納する番地はテキスト通りでなくても良い 演算結果は 2 バイトに収まると仮定 8h 83h 85h 必須の予習 : プログラムの作成とアセンブル 8h 82h 84h 47 48

補足 : 符号無し 2 バイトの乗算 補足 : アドレスモード MSB: 最上位ビット LSB: 最下位ビット バイト = 8ビット メモリ上での順序に注意 オペランド ( 引数 ) の表現方法のこと KUE-CHIP2 のアドレスモード (p.29~3 参照 ) ACC,IX:ACC,IX の内容がデータ 即値 : オペランドそのものがデータ 直接 : オペランドがメモリのアドレスそのアドレス上の内容がデータ 修飾 : オペランド +IX の内容 がメモリのアドレスそのアドレス上の内容がデータ 49 5 補足 : 命令について (p.8) 注意点 ADD: 加算命令 CFを考慮しない ADC: 加算命令 CFを考慮する ( 減算も同様 ) RCF:CF をリセットする 必ずプログラムを準備してくること! 次回からは各自 ( 一人一台 ) で実験を進めるすぐに開始できるように ( 機械語プログラム ) まずはフローチャートを作成すること授業開始時 ( 入力中 ) に問題がないか確認する プログラムとフローチャートは別の紙に 遅刻や準備不足に対する救済は行わないできなかった分は減点, 最悪の場合は不受理 5 52 フローチャートの例 2 バイトの加算の例 バイトの乗算 A B C プログラムの流れを日本語で図示する 初期化 C 終了判定 B=? N C に A を足す C+A C B を 減らす B- B Y 終了 HLT + A A2 B B2 C C2 CF 繰り上げ 加算 CF A2 + B2 + C2 A + B + CF C 終了 HLT RCF LD ADC ST LD ADC ST HLT ACC, [A2] ACC, [B2] ACC, [C2] ACC, [A] ACC, [B] ACC, [C] 53 54

プログラム作成時の注意点 よくある間違い 他人が見て分かるように書くこと 必ず紙に手書き or 印刷してくること 紙の両面を使わない : 2 RCF アセンブリ言語と : 64 8 LD ACC, [A2] 機械語は横に揃える 3: 94 82 ADC ACC, [B2] 修正用のスペースも 5: 74 84 ST ACC, [C2] 用意しておく 機械語は 2 進 6 進のどちらでも良いが, 6 進数なら確認しやすい 7: 64 8 LD ACC, [A] 9: 94 83 ADC ACC, [B] B: 74 85 ST ACC, [C] D: 8 HLT 2バイトのデータの取扱い上位 下位バイトの番地の誤り 初期化のし忘れ SUM += A 繰り上げの失敗 ADD 命令とADC 命令 CFのリセット 終了判定の誤り LD ではZeroFlagは立たない データの保存 (ST) のし忘れ アドレスが 6 進数ではなく 進数になっている 8h 83h 85h 8h 82h 84h 55 56 第 2 回 マイクロプロセッサ ( 第 2 回 ) 実験課題 3.2 乗算プログラムの作成 符号なし2バイト精度の2 数の積 データを格納する番地はテキスト通りでなくても良い 演算結果は 2 バイトに収まると仮定 必須の予習 : プログラムの作成とアセンブル 57 58 よくある間違い ( 再確認 ) 進め方 2 バイトのデータの取扱い上位 下位バイトの番地の誤り 初期化のし忘れ SUM += A 繰り上げの失敗 ADD 命令と ADC 命令 CF のリセット 終了判定の誤り LD では ZeroFlag は立たない データの保存 (ST) のし忘れ アドレスが 6 進数ではなく 進数になっている 入力ミス, アセンブルの誤り 8h 83h 85h 8h 82h 84h 各自の作成したプログラムを入力入力中にフローチャートをチェック早く終わった人は他の人をサポート ホワイトボードの ()~(4) で動作確認 それらが正しく計算できたら (A) と (B) を計算. 実行時間を計測 ホワイトボードに実行時間とプログラムのメモリ消費量 ( 単位 : バイト ) を記入プログラム部分 + データ格納部分 59 6

実行時間の理論値 自分のプログラムについて実行時間の理論値を求め, 実測値と比較せよ手順 ) 実行時間を決めるパラメータを特定 各命令のフェーズ数 (p.9 表 2) フェーズ = クロック周期 クロック周波数 = Hz 手順 2) 実行時間を求める計算式を導出手順 3) 式から (A),(B) の実行時間理論値を算出手順 4) 理論値と観測値の比較 検討事項のポイント 使用したプログラムのリストを載せ, フローチャートを用いて説明せよ 他の人のプログラムと比較 論点 : 実行時間 ( 実測値で可 ) 論点 2: プログラムのメモリ消費量 注意 : 他の人のプログラムは掲載不要だが, 簡単な説明は記述すること 6 62 次回 (p.28) オシロスコープへの文字の出力 課題 3.3 オシロスコープへの文字の出力必須の予習 : プログラムの作成とアセンブル 課題 3.4() メロディーの出力予習 : 軽く目を通しておく ( 付録 B. も ) 電卓を持参すること 出力バッファに DA コンバータを付けて出力信号をオシロスコープへ DA コンバータ : ディジタル信号をアナログ信号に変換する回路 DA コンバータ 3 (, の 4 桁の信号 ) (6 段階の値 ) 63 64 取り付ける DA コンバータの機能 オシロスコープへの出力 出力バッファの8ビットの中の上位 4ビットを x 座標下位 4ビットを y 座標とする x 座標の取れる範囲は h~fh y 座標の取れる範囲は h~fh F B LD ACC, 6Bh OUT 6 F 65 66

オシロスコープへの出力 注意点 F B 6 F LD ACC, 6Bh OUT 点を つずつ表示 続けて表示すれば全てが同時に表示されるように見える. つの点は として表示され として表示されないので注意 2. ずっと表示されるようにすること ( 図形表示部分を無限ループさせ, 停止させる時は SS ボタンを押す ) 3. オシロスコープの残像に注意 ( 表示点は ジャンプ ではなく 移動 する. そのため, 一筆書きの図形になる ) 4. 座標データを一箇所にまとめ, IX ( 修飾アドレス指定 ) を使うこと 67 68 修飾アドレス指定 余力がある場合 : LD IX, h 2: LD ACC, [IX+8h] IXを~4としてループ 4: ADD IX, h 文字 図形を動かしてみる例 : 右から左 8: 座標 8: 座標 2 82: 座標 3 83: 座標 4 84: 座標 5 まずは固定で完成してから ( 任意の課題は加点対象 ) 69 7 第 3 回 マイクロプロセッサ ( 第 3 回 ) 課題 3.3 オシロスコープへの文字の出力必須の予習 : プログラムの作成とアセンブル 課題 3.4() メロディーの出力予習 : 軽く目を通しておく ( 付録 B. も ) 電卓を持参すること 7 72

注意 進め方 使用する DA コンバータはとても壊れやすいので, 大事に扱うこと ( むやみに触らない ) 特に, 取り付け部分周辺の配線に注意 取り付け & 取り外しは教員 TA が行います 5:4 終了を目処に オシロスコープとDAコンバータを接続 チャンネル 赤 チャンネル2 青 グランド 黒 ダイヤルCLKFRQを にして実行 5:4 頃に次の説明 73 74 メロディーの出力 音とは KUE-CHIP2 から波を出力しスピーカから音を出す 今日 : 音を出す仕組みの基礎 次回 : メロディー出力プログラムの実行 音は空気の振動 ( 波 ) 音の三要素 大きさ 高さ 音色 波の振幅の大きさ 波の周波数の高さ 波の形 スピーカ : 電気信号を音 ( 空気振動 ) に変換する装置 75 76 作る波 方形波 : 長方形の波波の周期 T ( 秒 ) Ta ( 秒 )Tb( 秒 ) T = Ta + Tb On Off 77 音を出すプログラム (p.33 リスト 4) アドレス ラベル 命令 オペランド フェーズ数 : L: LD ACC, FFh 4 2: OUT 4 3: LD ACC, a 4 5: L: SUB ACC, h 4 7: BNZ L 4 9: LD ACC, h 4 B: 自分で OUT 4 C: 決める LD ACC, b 4 E: L2: SUB ACC, h 4 : 2: BNZ BA L2 L 4 4 波の On 部を作る 波の Off 部を作る 78

作る波 : 長さ 実験内容 3.4() p.28 方形波 : 長方形の波 波の周期 T ( 秒 ) Ta ( 秒 )Tb ( 秒 ) Ta = (2+8a)T,Tb = (6+8b)T ( ただし,T = クロック周期 ) On Off (a) オシロスコープでクロック周期を確認 スイッチCLKを中立に ダイヤルCLKFRQの ~8 の周波数を測定 信号はコネクタJP3より出力 (b) リスト 4 の a,b を設定 出力する音の周波数 :44Hz ラ 最適な T,a,b を計算によって定める T = Ta + Tb T = /44 ( 秒 ) Ta = (2+8a)T,Tb = (6+8b)T 最も精度が高くなる T を選択 79 8 実験内容 3.4() p.28 検討事項のポイント (c) 44Hz の音の出力 リスト 4 の入力 CLKFRQ の設定 DA コンバータを通してスピーカから出力 出力音が 44Hz ( 誤差 ±%) であることを計算によって確認 (3) オシロスコープによる文字の出力 プログラムのリストを載せて, プログラムの特徴を説明 修飾アドレス指定について どうやって文字を描画したのか 8 82 検討事項のポイント 検討事項のポイント (4) メロディーの出力 (a) 誤差 ±% の確認 どのように最適な T, a, b を計算したか? 計算過程を記述すること どのように確認を行ったか? 実際に誤差を計算すること 他の精度確認方法は考えられるか (4) メロディーの出力 (b) 精度をより上げるための対策 KUE-CHIP2 だけで対処する場合 ( ソフトウェア上, プログラム上の工夫 ) その他の機器を KUE-CHIP2 に接続する場合 ( ハードウェア上の工夫 ) メロディー出力の基本的なアルゴリズムはそのまま出力周波数を 44Hz に近づける方法 83 84

次回 注意 課題 3.4(2) メロディーの出力 簡単なメロディーを出力させる 必須の予習 : プログラムの作成とアセンブル 参考 : 付録 B.2 とリスト 5 (p.33~34) 楽譜データを用意するだけではダメリスト 5 のプログラムに改造が必要 時間内に完成しなかった場合は打ち切りデバッグのサポートはできるが, プログラムが無い場合はサポートできない メロディーの出力は無限に繰り返すこと p.34 表 4 音階の周波数 を参考に オクターブ高い音 周波数が2 倍 休符 はどうすれば実現できるか 音符と休符を判別し, 別処理が必要 同じ音が続くとつの長い音に聞こえる 音と音の間に空白が必要リスト5に改造が必要な部分 最も高周波 低周波な音でも可聴領域を超えない 85 86 メロディー出力プログラム例 ( リスト 5) プログラム領域 : 62 LD ACC, dptr 2: 75 A ST ACC, (dptr) 4: 65 A L: LD ACC, (dptr) 6: 68 LD IX, ACC 7: B2 3 ADD ACC, x3 9: 75 A ST ACC, (dptr) B: A2 8 SUB ACC, dptr2 D: 3 3 BNZ L F: 62 LD ACC, dptr : 75 A ST ACC, (dptr) 3: 67 2 L: LD ACC, (IX+2) 5: 75 C ST ACC, (n3) データ領域のアドレスを指している ( 自分のプログラムに合わせて設定 ) データ領域 : n n2 n3 dptr: ド 3: n n2 n3 レ 6: n n2 n3 音の先頭ミ 9: n n2 n3 ファ C: n n2 n3 ソ F: n n2 n3 ラ 2: n n2 n3 シ 5: n n2 n3 ド 8: dptr2: ( 未使用 ) 9: またはff image 出力 A:?? 音の終わり dptr B:?? n2 C:?? n3 どの音を鳴らすか (3ずつ増える) 実行時に使用 nは音の高さ,n2 n3は長さ (2 重ループ ) 87 マイクロプロセッサ ( 第 4 回 ) 88 第 4 回 検討事項のポイント 3.4(2) メロディーの出力 簡単なメロディーを出力させる 必須の予習 : プログラムの作成とアセンブル 参考 : 付録 B.2 とリスト 5 (p.33~34) DA コンバータの取扱いに注意 (4)(c) 各自のデータ表現の特徴 プログラムのリストを載せて説明せよ 例えば, 楽譜 は人間に理解しやすいようにメロディーを表現しているどのような表現なら理解しやすいのか 89 9

検討事項のポイント 検討事項のポイント (4)(d) 作成したメロディー出力法は他の CPU にも流用できるか? 他の CPU の例を つ挙げて考察 挙げた CPU の実行命令フェーズを調べ, それを踏まえて考察 (5) 自分が最も使用している CPU ( または, 有名な CPU) についてそのアーキテクチャを調べてまとめる ( 必須ではない ) レジスタ, 命令セット, メモリ空間の特徴 乗算命令がどのように実行されているか 任意の課題は加点対象 9 92 まとめ 計算機の仕組みについて理解例えば, なぜ 32bit の OS では 4G 以上のメモリが使えないのか? プログラムの作り方やデバッグの練習 高級言語によるプログラム ンパイラよるプログラムコアセンブリ言語に 4G = 4 24 24 24 =2 2 2 2 2 =2 32 アセンブラ機械語によるプログラム 93 実験報告書について 指導書 p.6 をよく読むこと PDF ファイルを Moodle 上で提出すること 表紙は自作のものでも構わない 実験方法について, 指導書を丸写しする必要はない この資料の 検討事項のポイント を参考に 指導書の課題 検討事項の番号に沿ってまとめること 必ず自己点検票をチェック ( 提出は不要 ) 提出〆切は 週間後の 2:3 ( 時間厳守 ) 病気等の例外を除き, 〆切の延長はしない 受理されたものへの改善 修正は可 ( 一週間以内 ) 未完成のもの ( 途中までしかないもの ) は不受理 94