slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
コンピュータ系実験 Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座 PowerPoint Presentation
Download Presentation
コンピュータ系実験 Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座

Loading in 2 Seconds...

play fullscreen
1 / 26

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


  • 91 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

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


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
アセンブリ言語とは?
  • こういう感じのものです。

ORG 0

BSF STATUS,RP0

CLRF TRISB

BCF STATUS,RP0

CLRF PORTB

MOVLW 55H

MOVWF PORTB

・・・・

slide3
アセンブリ言語とは?
  • プロセッサが解釈可能な言語(機械語)を人間が理解可能な形にした低水準言語

⇔高水準言語,高級言語 ex)C言語, Java

  • ニーモニックともいう
  • プロセッサごとに定義された命令を用いる
    • プロセッサによって言語仕様が異なる

Ex) PICとPentiumでは全く異なる命令

    • PICでは35種類の命令を使用する(実験書45~49ページ)
slide4
高級言語から機械語の流れ
  • C言語から機械語までの流れは以下のようになる(同じ高級言語でもJavaは少し異なる)

C言語のソースコード→(コンパイラ)→

アセンブリ言語→(アセンブラ,)→機械語

(→(リンカ)→実行コード)

    • 最近のコンパイラではC言語から機械語への変換まで全て行ってしまう
    • コンパイルオプションでアセンブリ言語のコードを出力することもできる
      • gccの場合は“-S”オプション
slide5
機械語とは?
  • プロセッサが解釈可能な言語
  • ディジタル回路では0と1で表現される
  • 下記の0と1の羅列がプロセッサでのなんらかの動作を示す

11000000000100

00000010001100

11000000010001

00011100001100

・・・

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

アセンブリ言語

MOVLW 04H

MOVWF 0CH

MOVLW 11H

ADDWF 0CH,W

・・・

機械語

11000000000100

00000010001100

11000000010001

00011100001100

・・・

slide7
用語①
  • アセンブル:アセンブリ言語で書かれたプログラムを機械語に変換すること
  • アセンブラ:アセンブリ言語を機械語に変換するプログラム

アセンブリ言語

MOVLW 04H

MOVWF 0CH

MOVLW 11H

ADDWF 0CH,W

機械語

11000000000100

00000010001100

11000000010001

00011100001100

アセンブル

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

ADDWF 0CH,W

オペコード

オペランド

slide9
アセンブリ言語の特徴
  • メモリやレジスタなど、計算資源を直接扱う
    • C言語のような変数は存在しない
    • C言語などのように変数に対してコンパイラがメモリを割り当てたり、計算に使用するレジスタを決めてくれたりはしない
  • プロセッサの構造(レジスタの数や用途など)を知らないとプログラミングできない
  • 一般に高級言語で書いたプログラムよりも高速に動作する
slide10
アセンブリ言語の用途
  • デバイスドライバやOSの一部
    • プロセッサのレジスタを直接操作する必要があるため
  • 組み込み機器向けのソフトウェア
    • メモリサイズの節約
    • 高速化のためのチューニング
slide11

プログラムメモリ

(EEPROM)

入出力ポート

メモリ

(レジスタ

 ファイル)

演算処理部

PICの構造
slide12

ALU

PICの構造

プログラム

メモリ

プログラム

カウンタ

命令

レジスタ

レジスタ

ファイル

MUX

入出力ポート

RA0~RA7

W レジスタ

RB0~RB7

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

  演算する際に一時保存用に使用するレジスタ

slide14
レジスタファイル

0番地

  • アドレスを指定することで、データの読み書きができる
  • 読み出し、書き込みのいずれであるかは命令によって決定される
  • 実験書13ページ参照

1番地

2番地

・・・

・・・

0B番地

0C番地

0D番地

・・・

4E番地

4F番地

slide15
レジスタファイル

0番地

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

1番地

2番地

・・・

・・・

0B番地

0C番地

0D番地

・・・

4E番地

4F番地

slide16
レジスタファイル

0番地

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

1番地

2番地

・・・

・・・

0B番地

0C番地

0D番地

・・・

4E番地

4F番地

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

各種演算をするブロック

レジスタ

ファイル

Wレジスタ

ALU

pic move movlw
PICの命令① MOVE系 -MOVLW
  • オペコードが”MOV”で始まるものはデータ転送命令(データコピー含む)
  • MOVLW (MOVe Literal to W)
    • リテラル(literal,定数)をWレジスタに書き込む
    • 例)MOVLW 04H

04HをWレジスタに書き込む(Hは16進数を示す)

  • 新たに定数を読み込むときに用いる命令
pic move movf
PICの命令① MOVE系 -MOVF
  • MOVF (MOVe File register)
    • ファイルレジスタの内容を指定した書き込み先に書き込む
    • 例)MOVF 0CH,W

0CH番地(ファイルレジスタのアドレス)の内容をWレジスタに書き込む

    • 例)MOVF 0CH,F

0CH番地に0CH番地の内容を書き込む(つまり何も変わらない)

  • ファイルレジスタの内容をWレジスタに読み出すときに用いる命令
pic move movwf
PICの命令① MOVE系 -MOVWF
  • MOVWF (MOVe W to File register)
    • Wレジスタの内容をファイルレジスタに書き込む
    • 例)MOVWF 0CH

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

  • Wレジスタの内容をファイルレジスタに格納するときに用いる命令
    • 計算結果の格納
    • データの一時退避
pic move
PICの命令① MOVE系 まとめ
  • MOVE系の命令をまとめると、以下のようになる

定数の

読み込み

MOVLW

MOVF

レジスタ

ファイル

Wレジスタ

MOVWF

slide22
PICの命令② 演算命令
  • ALUで実行する各種演算のための命令
    • 足し算、引き算
    • 論理演算(AND, OR, NOT)
    • シフト
pic addlw
PICの命令② 加算命令系 -ADDLW
  • ADDLW (ADDLiteral and W)
    • Wレジスタにリテラルを加算して計算結果をWレジスタに格納する
    • 例) ADDLW 11H

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

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

11H

04H

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

レジスタ

ファイル

プログラム

MOVLW 04H

MOVWF 0CH

MOVLW 11H

ADDWF 0CH,W

04H

Wレジスタ

04H

11H

15H

ALU

15H

04H

11H

slide26
実験書の訂正
  • 実験書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レジスタとリテラルの論理和