SlideShare a Scribd company logo
as-1. アセンブラ入門
1
金子邦彦
(68000 アセンブラ)
URL: https://www.kkaneko.jp/cc/as/index.html
Outline
1. メモリとは
2. 条件分岐のプログラム
3. 繰り返し処理のプログラム
メモリとは
• デジタルデータの記憶を行うLSIチップ
• デジタルデータを覚えさせたり,取り出した
りの機能がある
メモリ
• 読み出し
メモリ
読み出したい
データの「場所」
データ
• 書き込み
メモリ
書き込みたい
データの「場所」
とデータそのもの
アドレス 0
アドレス 1
アドレス 2
アドレス 3
アドレス 4
アドレス 5
アドレス 6
アドレス 7
アドレス 8
メモリへの書き込み
メモリの各区画は1バイト
(16進数で2桁)
前の値は消える
??
??
??
??
??
??
??
??
??
アドレス6番地,7番地に
「0400」を書き込むと
(1ワード分)
??
??
??
??
??
??
??
0 4
0 0
アドレス 0
アドレス 1
アドレス 2
アドレス 3
アドレス 4
アドレス 5
アドレス 6
アドレス 7
アドレス 8
メモリからの読み出し
メモリの各区画は1バイト
(16進数で2桁)
メモリの値は変化
しない
??
??
??
??
??
??
??
??
??
アドレス4番地,5番地
から1ワード分
読み出すとき
バイト,ワード,ロングワード
• バイト: 16進数で2桁
0x00 ~ 0xff
• ワード: 16進数で4桁(=2バイト)
0x0000 ~ 0xffff
• ロングワード: 16進数で8桁(=4バイト)
0x00000000 ~ 0xffffffff
この授業では、16進数を多用する.
16進数には、適宜頭に「0x」を付ける
メモリ
ア
ド
レ
ス
デ
コ
ー
ダ
ア
ド
レ
ス
デ
ー
タ
アドレス 0
アドレス 1
アドレス 2
アドレス 3
アドレス 4
アドレス 5
アドレス 6
アドレス 7
アドレス 8
アドレスが
通る信号線
データが
通る信号線
メモリの仕組み
アドレス4番地から,1ワード分読み出す
ア
ド
レ
ス
「
4
」
1
ワ
ー
ド
の
デ
ー
タ
(
1
ワ
ー
ド
分
を
一
括
読
み
出
し
)
必要なメモリを
オンに
アドレスが
入る
データが
出る
アドレス4、5
のメモリをオンに
アドレス6番地に,1ワード分書き込む
ア
ド
レ
ス
「
6
」
1
ワ
ー
ド
の
デ
ー
タ
(
1
ワ
ー
ド
分
を
一
括
書
き
込
み
)
必要なメモリを
オンに
アドレスが
入る
データが
入る
アドレス6、7
のメモリをオンに
例題1.x ≦ 5 での分岐
• 条件分岐の例として,次の例を考える
)
5
(
0
)
5
(
8
のとき
のとき





x
y
x
x
y
条件分岐とは
Yes
No
B A
条件
• 「ある条件」が成り立てばAを、成り立たな
ければBを実行
x ≦ 5 での分岐
実行結果の例
)
5
(
0
)
5
(
8
のとき
のとき





x
y
x
x
y
x
y
ここでは,x, y はともに4バイト
のデータ
見方
メモリの中身を表示: 16進表記,1バイト単位
メモリ
アドレス
メモリ
の中身
アドレス0x000000 から
0x00000f までの中身は・・・ この通り
x
y
ここでは,x, y はともに4バイト
のデータ
データが入っているエリア
プログラム本体そのものが
入っているエリア
未使用
関数の定義は,
今後の授業で触れる(今回は触れない)
x > 5 での分岐
C言語 68000アセンブラ言語
等価
等価
68000アセンブラ言語
データエリアの確保
x,y (ともに4バイトデータ)
のためのデータエリアを確保せよ
プログラム本体
68000アセンブラ言語
最初の時点
(プログラム全体をメモリ上にロードした時点であり,
プログラムを実際に実行する前)
メモリの中身
「4バイトをデータエリア内に確保.
最初は「0x0000 0007」にしておく.
x というラベルを付ける」という指示
「4バイトをデータエリア内に確保.
最初は「0x0000 0000」にしておく.
y というラベルを付ける」という指示
x
y
プログラム全体をメモリ上に
ロードした時点で,x, y の値がセットされる
「4バイトをデータエリア内に確保.
最初は「0x0000 0007」にしておく.
x というラベルを付ける」という指示
「4バイトをデータエリア内に確保.
最初は「0x0000 0000」にしておく.
y というラベルを付ける」という指示
x
y
プログラム全体をメモリ上に
ロードした時点で,x, y の値がセットされる
条件分岐とは
Yes
No
B A
条件
• 「ある条件」が成り立てばAを、成り立たな
ければBを実行
ロングワード
1ロングワードは4バイト
x, y,
をメモリエリア中
に確保
プログラム中で使用
.1 ロングワード(4バイト)
.w ワード(2バイト)
.b バイト(1バイト)
x と 5 の比較
(D0 を使用)
x > 5 のとき実行
される部分
そうでないときに
実行される部分
比較結果による分岐
実行順
①
②
③
④
⑤
⑥
⑦
⑧ 以後省略
ジャンプ ラベル endif1 へ
分岐せよという指示
x > 5 のとき実
行される部分
もし x>5 ならば
分岐しない
スキップ
①
②
③
④
⑤ 以後省略
ジャンプ
ラベル else1へ分岐
せよという指示
実行順
もし x≦5 ならば
そうでないときに
実行される部分
分岐する
スキップ
条件が成り立つ場合に
実行される部分
条件式
条件が成り立たない場
合に実行される部分
x > 5 での分岐
①
②
③
「5」をデータレジスタ D0 に格納
x の値とデータレジスタ D0 を比較
比較結果により else1 に分岐(条件分岐)
④
⑤
⑥
⑦
x の値をデータレジスタ D0 に格納
データレジスタ D0 の値を8倍にする
データレジスタ D0 の値を y に格納
endif1 に分岐
④ y の値を0にする
プログラムの実行順
x > 5
のとき
そうでないとき
例題2.繰り返し
• 繰り返しの例として,次の例を考える



3
1
i
i
s
等価
等価
繰り返し
関数の定義は,
今後の授業で触れる(今回は触れない)
繰り返し
この部分は繰り返し処理
(for 文による繰り返し)
・ i = 1 から開始
・ i を 1 ずつ足しながら,「i <= 3」 が
成り立たなくなったら終了
繰り返し
• ある条件が満たされるまで,同じ処理を繰
り返す
• ループ変数 (ループカウンタ)を使うこと
が多い
ループ変数: 繰り返しの回数を数える変数
– インクリメント 値を1増やす
– デクリメント 値を1減らす
繰り返し
実行結果の例
i
s
ここでは,i, s はともに4バイト
のデータ



3
1
i
i
s
繰り返し
繰り返しの終了条件
「i <= 3」が成り立たない
i と 3 の比較
i > 3
のときはジャンプ
i ≦ 3
のとき
繰り返し
ジャンプ
繰り返しを続ける
i と 3 の比較
そうでないときに
実行される部分
繰り返し
ジャンプ
繰り返しを続ける
i と 3 の比較
i > 3 のときは
ジャンプ

More Related Content

What's hot

バイナリ解析入門
バイナリ解析入門バイナリ解析入門
バイナリ解析入門
aksechack0001
 
Python Basics
Python BasicsPython Basics
Python Basics
primeteacher32
 
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
Hiro H.
 
Computer graphics
Computer graphics   Computer graphics
Computer graphics
Prianka Padmanaban
 
What is Tuple in python? | Python Tuple Tutorial | Edureka
What is Tuple in python? | Python Tuple Tutorial | EdurekaWhat is Tuple in python? | Python Tuple Tutorial | Edureka
What is Tuple in python? | Python Tuple Tutorial | Edureka
Edureka!
 
Python4HPC.pptx
Python4HPC.pptxPython4HPC.pptx
Python4HPC.pptx
priyam737974
 
goで末尾再帰最適化は使えるか?
goで末尾再帰最適化は使えるか?goで末尾再帰最適化は使えるか?
goで末尾再帰最適化は使えるか?
mori takuma
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 
Introduction to the LLVM Compiler System
Introduction to the LLVM  Compiler SystemIntroduction to the LLVM  Compiler System
Introduction to the LLVM Compiler System
zionsaint
 
公開鍵暗号8: 有限体上の楕円曲線の位数計算
公開鍵暗号8: 有限体上の楕円曲線の位数計算公開鍵暗号8: 有限体上の楕円曲線の位数計算
公開鍵暗号8: 有限体上の楕円曲線の位数計算
Joe Suzuki
 
Datatypes in C++.pptx
Datatypes in C++.pptxDatatypes in C++.pptx
Datatypes in C++.pptx
AnushkaGupta763558
 
Amebaにおけるログ解析基盤Patriotの活用事例
Amebaにおけるログ解析基盤Patriotの活用事例Amebaにおけるログ解析基盤Patriotの活用事例
Amebaにおけるログ解析基盤Patriotの活用事例
cyberagent
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
 
第二回CTF勉強会資料
第二回CTF勉強会資料第二回CTF勉強会資料
第二回CTF勉強会資料
Asuka Nakajima
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
Shota Shinogi
 
Bloom filter
Bloom filterBloom filter
Bloom filter
Kumazaki Hiroki
 
USB3.0ドライバ開発の道
USB3.0ドライバ開発の道USB3.0ドライバ開発の道
USB3.0ドライバ開発の道
uchan_nos
 
PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25
Isaac Mathis
 
Rustで始める競技プログラミング
Rustで始める競技プログラミングRustで始める競技プログラミング
Rustで始める競技プログラミング
Naoya Okanami
 

What's hot (20)

バイナリ解析入門
バイナリ解析入門バイナリ解析入門
バイナリ解析入門
 
Python Basics
Python BasicsPython Basics
Python Basics
 
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
 
Computer graphics
Computer graphics   Computer graphics
Computer graphics
 
What is Tuple in python? | Python Tuple Tutorial | Edureka
What is Tuple in python? | Python Tuple Tutorial | EdurekaWhat is Tuple in python? | Python Tuple Tutorial | Edureka
What is Tuple in python? | Python Tuple Tutorial | Edureka
 
Python4HPC.pptx
Python4HPC.pptxPython4HPC.pptx
Python4HPC.pptx
 
goで末尾再帰最適化は使えるか?
goで末尾再帰最適化は使えるか?goで末尾再帰最適化は使えるか?
goで末尾再帰最適化は使えるか?
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
Introduction to the LLVM Compiler System
Introduction to the LLVM  Compiler SystemIntroduction to the LLVM  Compiler System
Introduction to the LLVM Compiler System
 
公開鍵暗号8: 有限体上の楕円曲線の位数計算
公開鍵暗号8: 有限体上の楕円曲線の位数計算公開鍵暗号8: 有限体上の楕円曲線の位数計算
公開鍵暗号8: 有限体上の楕円曲線の位数計算
 
Datatypes in C++.pptx
Datatypes in C++.pptxDatatypes in C++.pptx
Datatypes in C++.pptx
 
Amebaにおけるログ解析基盤Patriotの活用事例
Amebaにおけるログ解析基盤Patriotの活用事例Amebaにおけるログ解析基盤Patriotの活用事例
Amebaにおけるログ解析基盤Patriotの活用事例
 
CTFとは
CTFとはCTFとは
CTFとは
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
第二回CTF勉強会資料
第二回CTF勉強会資料第二回CTF勉強会資料
第二回CTF勉強会資料
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
Bloom filter
Bloom filterBloom filter
Bloom filter
 
USB3.0ドライバ開発の道
USB3.0ドライバ開発の道USB3.0ドライバ開発の道
USB3.0ドライバ開発の道
 
PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25
 
Rustで始める競技プログラミング
Rustで始める競技プログラミングRustで始める競技プログラミング
Rustで始める競技プログラミング
 

Similar to as-1. アセンブラ入門

kagami_comput2016_06
kagami_comput2016_06kagami_comput2016_06
kagami_comput2016_06
swkagami
 
Sqlの書き方セミナー資料
Sqlの書き方セミナー資料Sqlの書き方セミナー資料
Sqlの書き方セミナー資料
Sadayoshi Ikushima
 
kagamicomput201706
kagamicomput201706kagamicomput201706
kagamicomput201706
swkagami
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境
yuichi_komatsu
 
as-2. メモリと CPU
as-2. メモリと CPUas-2. メモリと CPU
as-2. メモリと CPU
kunihikokaneko1
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
Kouhei Sutou
 

Similar to as-1. アセンブラ入門 (6)

kagami_comput2016_06
kagami_comput2016_06kagami_comput2016_06
kagami_comput2016_06
 
Sqlの書き方セミナー資料
Sqlの書き方セミナー資料Sqlの書き方セミナー資料
Sqlの書き方セミナー資料
 
kagamicomput201706
kagamicomput201706kagamicomput201706
kagamicomput201706
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境
 
as-2. メモリと CPU
as-2. メモリと CPUas-2. メモリと CPU
as-2. メモリと CPU
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 

More from kunihikokaneko1

cs-8. 表計算ソフトウエアを用いたデータの扱い
cs-8. 表計算ソフトウエアを用いたデータの扱い cs-8. 表計算ソフトウエアを用いたデータの扱い
cs-8. 表計算ソフトウエアを用いたデータの扱い
kunihikokaneko1
 
cs-7. 乱数,シミュレーション
cs-7. 乱数,シミュレーション  cs-7. 乱数,シミュレーション
cs-7. 乱数,シミュレーション
kunihikokaneko1
 
cs-6. データベースとデータサイエンス
cs-6. データベースとデータサイエンスcs-6. データベースとデータサイエンス
cs-6. データベースとデータサイエンス
kunihikokaneko1
 
cs-5. 人工知能の概要
cs-5. 人工知能の概要 cs-5. 人工知能の概要
cs-5. 人工知能の概要
kunihikokaneko1
 
cs-4. プログラミング入門
cs-4. プログラミング入門cs-4. プログラミング入門
cs-4. プログラミング入門
kunihikokaneko1
 
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックスcs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
kunihikokaneko1
 
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素 cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
kunihikokaneko1
 
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタcs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
kunihikokaneko1
 
mi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョンmi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョン
kunihikokaneko1
 
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
kunihikokaneko1
 
mi-6. 画像分類システム
mi-6. 画像分類システムmi-6. 画像分類システム
mi-6. 画像分類システム
kunihikokaneko1
 
mi-5. ディープラーニング
mi-5. ディープラーニングmi-5. ディープラーニング
mi-5. ディープラーニング
kunihikokaneko1
 
mi-4. 機械学習
mi-4. 機械学習mi-4. 機械学習
mi-4. 機械学習
kunihikokaneko1
 
mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習
kunihikokaneko1
 
mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例
kunihikokaneko1
 
mi-1. 人工知能の概要
mi-1. 人工知能の概要mi-1. 人工知能の概要
mi-1. 人工知能の概要
kunihikokaneko1
 
kaneko202304.pptx
kaneko202304.pptxkaneko202304.pptx
kaneko202304.pptx
kunihikokaneko1
 
Coding Standards of C++ について
 Coding Standards of C++ について  Coding Standards of C++ について
Coding Standards of C++ について
kunihikokaneko1
 
co-3. サブクラス、継承
co-3. サブクラス、継承co-3. サブクラス、継承
co-3. サブクラス、継承
kunihikokaneko1
 
co-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出しco-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出し
kunihikokaneko1
 

More from kunihikokaneko1 (20)

cs-8. 表計算ソフトウエアを用いたデータの扱い
cs-8. 表計算ソフトウエアを用いたデータの扱い cs-8. 表計算ソフトウエアを用いたデータの扱い
cs-8. 表計算ソフトウエアを用いたデータの扱い
 
cs-7. 乱数,シミュレーション
cs-7. 乱数,シミュレーション  cs-7. 乱数,シミュレーション
cs-7. 乱数,シミュレーション
 
cs-6. データベースとデータサイエンス
cs-6. データベースとデータサイエンスcs-6. データベースとデータサイエンス
cs-6. データベースとデータサイエンス
 
cs-5. 人工知能の概要
cs-5. 人工知能の概要 cs-5. 人工知能の概要
cs-5. 人工知能の概要
 
cs-4. プログラミング入門
cs-4. プログラミング入門cs-4. プログラミング入門
cs-4. プログラミング入門
 
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックスcs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
 
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素 cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
 
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタcs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
 
mi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョンmi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョン
 
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
 
mi-6. 画像分類システム
mi-6. 画像分類システムmi-6. 画像分類システム
mi-6. 画像分類システム
 
mi-5. ディープラーニング
mi-5. ディープラーニングmi-5. ディープラーニング
mi-5. ディープラーニング
 
mi-4. 機械学習
mi-4. 機械学習mi-4. 機械学習
mi-4. 機械学習
 
mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習
 
mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例
 
mi-1. 人工知能の概要
mi-1. 人工知能の概要mi-1. 人工知能の概要
mi-1. 人工知能の概要
 
kaneko202304.pptx
kaneko202304.pptxkaneko202304.pptx
kaneko202304.pptx
 
Coding Standards of C++ について
 Coding Standards of C++ について  Coding Standards of C++ について
Coding Standards of C++ について
 
co-3. サブクラス、継承
co-3. サブクラス、継承co-3. サブクラス、継承
co-3. サブクラス、継承
 
co-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出しco-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出し
 

as-1. アセンブラ入門