コンピュータ系実験 Ⅲ 「ワンチップマイコンの応用」 第1週目...

26
ココココココココココココココココココココココ 「」 ココ コココココココココ

description

コンピュータ系実験 Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座. アセンブリ言語とは?. こういう感じのものです。. ORG 0 BSF STATUS,RP0 CLRF TRISB BCF STATUS,RP0 CLRF PORTB MOVLW 55H MOVWF PORTB ・・・・. アセンブリ言語とは?. プロセッサが解釈可能な言語(機械語)を人間が理解可能な形にした低水準言語 ⇔高水準言語 , 高級言語 ex ) C 言語 , Java - PowerPoint PPT Presentation

Transcript of コンピュータ系実験 Ⅲ 「ワンチップマイコンの応用」 第1週目...

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

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

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

アセンブリ言語とは? こういう感じのものです。

ORG 0BSF STATUS,RP0CLRF TRISBBCF STATUS,RP0CLRF PORTBMOVLW 55HMOVWF PORTB・・・・

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

アセンブリ言語とは? プロセッサが解釈可能な言語(機械語)を

人間が理解可能な形にした低水準言語 ⇔ 高水準言語 , 高級言語 ex ) C 言語 ,

Java ニーモニックともいう プロセッサごとに定義された命令を用いる

プロセッサによって言語仕様が異なる Ex) PIC と Pentium では全く異なる命令PIC では 35 種類の命令を使用する(実験書

45 ~ 49 ページ)

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

高級言語から機械語の流れ C 言語から機械語までの流れは以下のようにな

る(同じ高級言語でも Java は少し異なる) C 言語のソースコード→(コンパイラ)→ アセンブリ言語→(アセンブラ , )→機械語 (→(リンカ)→実行コード)

最近のコンパイラでは C 言語から機械語への変換まで全て行ってしまう

コンパイルオプションでアセンブリ言語のコードを出力することもできる

gcc の場合は“ -S” オプション

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

機械語とは? プロセッサが解釈可能な言語 ディジタル回路では0と1で表現される 下記の0と1の羅列がプロセッサでのな

んらかの動作を示す

11000000000100000000100011001100000001000100011100001100

・・・

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

機械語とアセンブリ言語 機械語を人間が理解可能な形にしたもの 命令を見れば大体の動作の予想がつく

アセンブリ言語MOVLW 04HMOVWF 0CHMOVLW 11HADDWF 0CH,W

・・・

機械語11000000000100000000100011001100000001000100011100001100

・・・

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

用語① アセンブル:アセンブリ言語で書かれた

プログラムを機械語に変換すること アセンブラ:アセンブリ言語を機械語に

変換するプログラム

アセンブリ言語MOVLW 04HMOVWF 0CHMOVLW 11HADDWF 0CH,W

機械語11000000000100000000100011001100000001000100011100001100

アセンブル

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

用語② アセンブリ言語の動作を示す部分をオペ

コード、引数を示す部分をオペランドという

ADDWF 0CH,W

オペコード オペランド

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

アセンブリ言語の特徴 メモリやレジスタなど、計算資源を直接扱う

C 言語のような変数は存在しないC 言語などのように変数に対してコンパイラがメ

モリを割り当てたり、計算に使用するレジスタを決めてくれたりはしない

プロセッサの構造(レジスタの数や用途など)を知らないとプログラミングできない

一般に高級言語で書いたプログラムよりも高速に動作する

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

アセンブリ言語の用途 デバイスドライバや OS の一部

プロセッサのレジスタを直接操作する必要があるため

組み込み機器向けのソフトウェアメモリサイズの節約高速化のためのチューニング

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

PIC の構造

演算処理部

プログラムメモリ( EEPROM )

メモリ(レジスタ

 ファイル)

入出力ポー

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

PIC の構造プログラム

カウンタプログラム

メモリ

命令レジスタ

レジスタファイル

MUX

ALUW レジスタ

入出力ポート

RA0 ~ RA7

RB0 ~ RB7

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

PIC ( PIC 16 F84 )上の資源 PIC 上でプログラミングする際に使用する資源

は以下の通りである(実験書7~8ページ)プログラムメモリ:プログラムを格納するメモリレジスタファイル:動作設定やデータ格納用メモリ

STATUS レジスタ ポートの入出力設定、入出力 汎用レジスタ など

W レジスタ( Working Register ):  演算する際に一時保存用に使用するレジスタ

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

レジスタファイル アドレスを指定す

ることで、データの読み書きができる

読み出し、書き込みのいずれであるかは命令によって決定される

実験書 13 ページ参照

・・

・・

・・

0番地1番地2番地

0B 番地0C 番地0D 番地

4F 番地4E 番地

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

レジスタファイル 0番地から0 B

番地まではSpecial Function Register ( SFR)と呼ばれ、用途が決まっている PIC の動作設定 ステータス 外部との入出力

・・

・・

・・

0番地1番地2番地

0B 番地0C 番地0D 番地

4F 番地4E 番地

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

レジスタファイル 0 C 番地から 4F

番地までは汎用レジスタであり、プログラム実行中の一時データなどの保存に使用する

・・

・・

・・

0番地1番地2番地

0B 番地0C 番地0D 番地

4F 番地4E 番地

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

PIC でのプログラミング W レジスタにレジスタファ

イルの値を読み出す(または直値をロード)

その値とレジスタファイルの値(または直値)で演算

ALU : Arithmetic Logic Unit 各種演算をするブロック

ALU

レジスタファイル

W レジスタ

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

PIC の命令① MOVE 系 -MOVLW オペコードが” MOV” で始まるものはデータ転

送命令(データコピー含む)

MOVLW ( MOVe Literal to W )リテラル( literal, 定数)を W レジスタに書き込む例) MOVLW 04H 04H を W レジスタに書き込む( H は 16 進数を示

す) 新たに定数を読み込むときに用いる命令

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

PIC の命令① MOVE 系 -MOVF MOVF ( MOVe File register )

ファイルレジスタの内容を指定した書き込み先に書き込む

例) MOVF 0CH,W 0CH 番地(ファイルレジスタのアドレス)の

内容を W レジスタに書き込む例) MOVF 0CH,F 0CH 番地に 0CH 番地の内容を書き込む(つま

り何も変わらない) ファイルレジスタの内容を W レジスタに

読み出すときに用いる命令

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

PIC の命令① MOVE 系 -MOVWF MOVWF ( MOVe W to File register )

W レジスタの内容をファイルレジスタに書き込む

例) MOVWF 0CH W レジスタの内容を 0CH 番地に書き込む

W レジスタの内容をファイルレジスタに格納するときに用いる命令計算結果の格納データの一時退避

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

PIC の命令① MOVE 系 まとめ MOVE 系の命令をまとめると、以下のようになる

W レジスタレジスタファイル

MOVLW

MOVF

MOVWF

定数の読み込み

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

PIC の命令② 演算命令 ALU で実行する各種演算のための命令

足し算、引き算論理演算( AND, OR, NOT )シフト

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

PIC の命令② 加算命令系 -ADDLW

ADDLW ( ADD Literal and W )W レジスタにリテラルを加算して計算結果を

W レジスタに格納する例) ADDLW 11H

11H と W レジスタの値を加算して W レジスタに格納

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

PIC の命令② 演算命令 – ADD系 ADDWF ( ADD W and File register )

ファイルレジスタの指定した番地の値と W レジスタの値を加算

例) ADDWF 0CH, W 0CH 番地の値と W レジスタの値を加算して W レジス

タに格納 例) ADDWF 0CH, F 0CH 番地の値と W レジスタの値を加算して 0CH 番地

(ファイルレジスタ)に格納 加算命令には ADD だけでなく、1だけ増やすイ

ンクリメント命令も存在する 他の演算命令の使い方もほぼ同じなので、説明は

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

例)

ALU

レジスタファイル

W レジスタプログラム

MOVLW 04HMOVWF 0CHMOVLW 11HADDWF 0CH,W

04 H を0 CH 番地にロードし、その値と11 H を加算する

04H

11H

04H

04H

11H

15H

15H

04H11H

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

実験書の訂正 実験書 45 ページ、 ANDWF 命令の説明

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 レジスタとリテラルの論理和