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

質問応答システム入門
質問応答システム入門質問応答システム入門
質問応答システム入門
Hiroyoshi Komatsu
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとはTakuya Akiba
 
固有表現抽出について
固有表現抽出について固有表現抽出について
固有表現抽出について
Syo Kyojin
 
双対性
双対性双対性
双対性
Yoichi Iwata
 
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
 
工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方
ychtanaka
 
すごい配列楽しく学ぼう
すごい配列楽しく学ぼうすごい配列楽しく学ぼう
すごい配列楽しく学ぼう
xenophobia__
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
増田 亨
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版
Keiichiro Shikano
 
Divisor
DivisorDivisor
Divisoroupc
 
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
 
Pietのエディタを作った話
Pietのエディタを作った話Pietのエディタを作った話
Pietのエディタを作った話
京大 マイコンクラブ
 

What's hot (20)

質問応答システム入門
質問応答システム入門質問応答システム入門
質問応答システム入門
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
固有表現抽出について
固有表現抽出について固有表現抽出について
固有表現抽出について
 
双対性
双対性双対性
双対性
 
全域木いろいろ
全域木いろいろ全域木いろいろ
全域木いろいろ
 
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方
 
すごい配列楽しく学ぼう
すごい配列楽しく学ぼうすごい配列楽しく学ぼう
すごい配列楽しく学ぼう
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版
 
Divisor
DivisorDivisor
Divisor
 
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
 
Pietのエディタを作った話
Pietのエディタを作った話Pietのエディタを作った話
Pietのエディタを作った話
 

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. アセンブラ入門