コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座

Slides:



Advertisements
Similar presentations
1 B10 CPU を作る 1 日目 解説 TA 高田正法
Advertisements

2006/10/26 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
計算機システムⅡ 主記憶装置とALU,レジスタの制御
情報システム基盤学基礎1 コンピュータアーキテクチャ編 第2回 命令
情報工学基礎(改訂版) 岡崎裕之.
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第2週目
2012年度 計算機システム演習 第4回 白幡 晃一.
ソフトウェア階層 分類 具体例 応用ソフト 基本ソフト アプリケーションソフト 個別アプリケーション SEやユーザが開発するプログラム
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
App. A アセンブラ、リンカ、 SPIMシミュレータ
計算機システムⅡ 命令セットアーキテクチャ
プログラムはなぜ動くのか.
計算機基礎Ⅱ,Ⅲ (指導書 pp. 76~94) 改訂:佐竹 純二 (作成:岡本 吉央).
情報電子工学演習V(ハードウェア実技演習) PICマイコンによる光学式テルミンの製作
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
「ソフトウェアのしくみ」.
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
コンピュータの原理 1E17M053-9 奈良 皐佑 1E17M070-7 師尾 直希        1E17M078-6 渡邊 惇.
型付きアセンブリ言語を用いた安全なカーネル拡張
プログラミング言語入門 手続き型言語としてのJava
勉強会その1    2016/4/ 分35秒 コンピュータアーキテクチャとは? コンピュータの構成 命令の実行.
1.コンピュータと情報処理 p.18 第1章第1節 2.コンピュータの動作のしくみ CPUと論理回路
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
演習課題の進め方 1.製作内容の決定 2.部品の配置を決める (回路図を描く) 3.処理の流れをフローチャートに表す
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第3週目
情報リテラシー2014 part 5/5 (亀田担当分最終回)
プログラミング言語入門.
TA 高田正法 B10 CPUを作る 3日目 SPIMの改造 TA 高田正法
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
情報電子工学演習Ⅴ(ハードウェア実技演習) PICマイコンによる光学式テルミンの製作
ディジタル回路の設計と CADによるシステム設計
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
第4回 ファイル入出力方法.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
情報とコンピュータ 静岡大学工学部 安藤和敏
情報電子工学演習Ⅴ(ハードウェア実技演習) PICマイコンによる光学式テルミンの製作
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
2010年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンパイラ 2012年10月1日
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 2 回.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語 1.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 5 回.
プログラムの開発手順 1.プログラム設計(仕様の決定) 2.コーディング(ソースファイルの作成) 3.アセンブル(オブジェクトファイル
言語プロセッサ 第12日目 平成20年1月9日.
ディジタル回路 8. 機能的な順序回路 五島 正裕.
オペレーティングシステム 作成 T21R003 荏原 寛太.
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
2008年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
6.5 最終コード生成 (1)コードの形式 ①絶対2進コード(AB : absolute binary) 命令後のオペランドが絶対番地指定。
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座

アセンブリ言語とは? こういう感じのものです。 ORG 0 BSF STATUS,RP0 CLRF TRISB BCF STATUS,RP0 CLRF PORTB MOVLW 55H MOVWF PORTB ・・・・

アセンブリ言語とは? プロセッサが解釈可能な言語(機械語)を人間が理解可能な形にした低水準言語 ⇔高水準言語,高級言語 ex)C言語, Java ニーモニックともいう プロセッサごとに定義された命令を用いる プロセッサによって言語仕様が異なる Ex) PICとPentiumでは全く異なる命令 PICでは35種類の命令を使用する(実験書45~49ページ)

高級言語から機械語の流れ C言語から機械語までの流れは以下のようになる(同じ高級言語でもJavaは少し異なる) アセンブリ言語→(アセンブラ,)→機械語 (→(リンカ)→実行コード) 最近のコンパイラではC言語から機械語への変換まで全て行ってしまう コンパイルオプションでアセンブリ言語のコードを出力することもできる gccの場合は“-S”オプション

機械語とは? プロセッサが解釈可能な言語 ディジタル回路では0と1で表現される 下記の0と1の羅列がプロセッサでのなんらかの動作を示す 11000000000100 00000010001100 11000000010001 00011100001100 ・・・

機械語とアセンブリ言語 機械語を人間が理解可能な形にしたもの 命令を見れば大体の動作の予想がつく 機械語 11000000000100 00000010001100 11000000010001 00011100001100 ・・・ アセンブリ言語 MOVLW 04H MOVWF 0CH MOVLW 11H ADDWF 0CH,W ・・・

用語① アセンブル:アセンブリ言語で書かれたプログラムを機械語に変換すること アセンブラ:アセンブリ言語を機械語に変換するプログラム MOVLW 04H MOVWF 0CH MOVLW 11H ADDWF 0CH,W 機械語 11000000000100 00000010001100 11000000010001 00011100001100 アセンブル

用語② アセンブリ言語の動作を示す部分をオペコード、引数を示す部分をオペランドという ADDWF 0CH,W オペコード オペランド

アセンブリ言語の特徴 メモリやレジスタなど、計算資源を直接扱う プロセッサの構造(レジスタの数や用途など)を知らないとプログラミングできない C言語のような変数は存在しない C言語などのように変数に対してコンパイラがメモリを割り当てたり、計算に使用するレジスタを決めてくれたりはしない プロセッサの構造(レジスタの数や用途など)を知らないとプログラミングできない 一般に高級言語で書いたプログラムよりも高速に動作する

アセンブリ言語の用途 デバイスドライバやOSの一部 組み込み機器向けのソフトウェア プロセッサのレジスタを直接操作する必要があるため メモリサイズの節約 高速化のためのチューニング

PICの構造 演算処理部 プログラムメモリ (EEPROM) メモリ (レジスタ  ファイル) 入出力ポート

PICの構造 プログラム メモリ プログラム カウンタ 命令 レジスタ レジスタ ファイル MUX 入出力ポート W レジスタ ALU RA0~RA7 W レジスタ ALU RB0~RB7

PIC(PIC16F84)上の資源 PIC上でプログラミングする際に使用する資源は以下の通りである(実験書7~8ページ) プログラムメモリ:プログラムを格納するメモリ レジスタファイル:動作設定やデータ格納用メモリ STATUSレジスタ ポートの入出力設定、入出力 汎用レジスタ など Wレジスタ(Working Register):   演算する際に一時保存用に使用するレジスタ

レジスタファイル アドレスを指定することで、データの読み書きができる 読み出し、書き込みのいずれであるかは命令によって決定される 0番地 アドレスを指定することで、データの読み書きができる 読み出し、書き込みのいずれであるかは命令によって決定される 実験書13ページ参照 1番地 2番地 ・・・ ・・・ 0B番地 0C番地 0D番地 ・・・ 4E番地 4F番地

レジスタファイル 0番地から0B番地まではSpecial Function Register(SFR)と呼ばれ、用途が決まっている 0番地 PICの動作設定 ステータス 外部との入出力 1番地 2番地 ・・・ ・・・ 0B番地 0C番地 0D番地 ・・・ 4E番地 4F番地

レジスタファイル 0C番地から4F番地までは汎用レジスタであり、プログラム実行中の一時データなどの保存に使用する 0番地 1番地 2番地 ・・・ ・・・ 0B番地 0C番地 0D番地 ・・・ 4E番地 4F番地

PICでのプログラミング Wレジスタにレジスタファイルの値を読み出す(または直値をロード) その値とレジスタファイルの値(または直値)で演算 ALU:Arithmetic Logic Unit 各種演算をするブロック レジスタ ファイル Wレジスタ ALU

PICの命令① MOVE系 -MOVLW オペコードが”MOV”で始まるものはデータ転送命令(データコピー含む) MOVLW (MOVe Literal to W) リテラル(literal,定数)をWレジスタに書き込む 例)MOVLW 04H 04HをWレジスタに書き込む(Hは16進数を示す) 新たに定数を読み込むときに用いる命令

PICの命令① MOVE系 -MOVF MOVF (MOVe File register) ファイルレジスタの内容を指定した書き込み先に書き込む 例)MOVF 0CH,W 0CH番地(ファイルレジスタのアドレス)の内容をWレジスタに書き込む 例)MOVF 0CH,F 0CH番地に0CH番地の内容を書き込む(つまり何も変わらない) ファイルレジスタの内容をWレジスタに読み出すときに用いる命令

PICの命令① MOVE系 -MOVWF MOVWF (MOVe W to File register) 例)MOVWF 0CH Wレジスタの内容を0CH番地に書き込む Wレジスタの内容をファイルレジスタに格納するときに用いる命令 計算結果の格納 データの一時退避

PICの命令① MOVE系 まとめ MOVE系の命令をまとめると、以下のようになる 定数の 読み込み MOVLW MOVF レジスタ ファイル Wレジスタ MOVWF

PICの命令② 演算命令 ALUで実行する各種演算のための命令 足し算、引き算 論理演算(AND, OR, NOT) シフト

PICの命令② 加算命令系 -ADDLW ADDLW (ADD Literal and W) Wレジスタにリテラルを加算して計算結果をWレジスタに格納する 例) ADDLW 11H 11HとWレジスタの値を加算してWレジスタに格納

PICの命令② 演算命令 –ADD系 ADDWF (ADD W and File register) 例) ADDWF 0CH, W 0CH番地の値とWレジスタの値を加算してWレジスタに格納 例) ADDWF 0CH, F 0CH番地の値とWレジスタの値を加算して0CH番地(ファイルレジスタ)に格納 加算命令にはADDだけでなく、1だけ増やすインクリメント命令も存在する 他の演算命令の使い方もほぼ同じなので、説明は略

例) 04H 11H 04Hを0CH番地にロードし、その値と11Hを加算する MOVLW 04H MOVWF 0CH MOVLW 11H レジスタ ファイル プログラム MOVLW 04H MOVWF 0CH MOVLW 11H ADDWF 0CH,W 04H Wレジスタ 15H 04H 11H ALU 11H 04H 15H

実験書の訂正 実験書45ページ、ANDWF命令の説明 実験書47ページ、IORLW命令の説明 1行目:ADD W with F → AND W with F 例:ADDWF REG0, F → ANDWF REG0, F 例のコメント:W+REG0 → REG0 AND REG0 実験書47ページ、IORLW命令の説明 1行目:Wレジスタとファイルレジスタの論理和 → Wレジスタとリテラルの論理和