vc
-
5.
インラインアセンブラ
(
V
isual
Studio
C++
の機
能と操作演習,
全
5
回)
1
金子邦彦
https://www
.kkaneko.jp/cc/vc/index.html
目次
5-1.
インラインアセンブラ
5-2.
算術演算命令の例
2
5-1
インラインアセンブラ
3
インラインア
センブラ
•
インラインアセンブ
ラとは、
•
他の言語の中に、ア
センブリ言語のプログラムを
埋め込むこと
4
アセンブリ言語
のプログラム
の埋め込み
•
V
isual Stu
dio 2015
を起動しなさい
•
V
isual
Studio 2015
で、
Win32
コンソールアプリ
ケーション用プロジ
ェクトを新規作成しなさい
5
プロジェクトの「名前」は何でもよい
パソ
コン演
習
•
V
isual Stu
dio 2015
のエディタを使って
、ソース
ファイルを編集しな
さい
6
5
行追加
•
ビルドしなさい.ビルドのあと「1
正常終了、
0
失敗」の表示を確認しな
さい
→
表示さ
れなければ、プログ
ラムのミスを自分で
確認し、修正して、
ビルドをやり直す
7
•
V
isual
Studio 2015
で「
pr
intf
」の
行に、ブ
レーク
ポイントを設定しな
さい
8
①
「
printf
」の行
を
マ
ウ
スでクリック
②
「デバッグ」
→
「
ブ
レー
ク
ポイント
の設定
/
解除
」
③
ブレークポイントが
設定されるので
確認.
赤丸
がブレークポイン
トの印
•
V
isual Stu
dio 201
5
で、デバッガーを
起動しなさい.
•
「
printf
」の行で、
実行が中断すること
を確認しな
さい
あとで使
う
ので、中断したまま
にしておくこと
9
「デバッグ」
→
「
デバッグの開始
」
「
printf
」の行で実行が
中断している
•
「
printf
」の行で、
実行が中断した状態
で、変数の
値を表示させなさい
.手順は次の通り.
10
①
「デバッグ」
→
「
ウ
インド
ウ
」
→
「
ロー
カル
」
②
変数名と値の対応表が
表示される
•
「
printf
」の行で、
実行が中断した状態
で、逆アセ
ンブルを行いなさい
.
11
①
「デバッグ」
→
「
ウ
イン
ド
ウ
」
→
「
逆アセンブル
」
②
逆アセンブルの結果
が
表示される
•
1
次のこ
とを
確認しなさ
い(
V
isua
l
Studio
での
操作
ではない).
12
mov
a, 100
は
move dword
ptr
[a],
64h
に変化
※
どちらも
同じ
意味
・
V
isual
C++
の
変数「
a
」
は「
dword
ptr
[a]
」と翻訳され、
・
10
進数の「
100
」は
16
進数の
「
64
」に翻訳されている
•
最後に、プログラム実行の再開の操作を行いなさ
い。これで、デバッ
ガーが終了する。
13
「デバッグ」
→
「
続行
」
5-2
算術演算命令の例
14
算術演算の例
15
アセンブリ言語のプログラム
a
に
100
をセット
a
に
200
を足しこむ
•
V
isual Stu
dio 2015
を起動しなさい
•
V
isual
Studio 2015
で、
Win32
コンソールアプリ
ケーション用プロジ
ェクトを新規作成しなさい
16
プロジェクトの「名前」は何でもよい
パソ
コン演
習
•
V
isual Stu
dio 2015
のエディタを使って
、ソース
ファイルを編集しな
さい
17
6行追加
•
ビルドしなさい.ビルドのあと「1
正常終了、
0
失敗」の表示を確認しな
さい
→
表示さ
れなければ、プログ
ラムのミスを自分で
確認し、修正して、
ビルドをやり直す
18
•
V
isual
Studio 2015
で「
pr
intf
」の
行に、ブ
レーク
ポイントを設定しな
さい
19
①
「
printf
」の行
を
マ
ウ
スでクリック
②
「デバッグ」
→
「
ブ
レークポイントの設定
/
解除
」
③
ブレークポイントが
設定されるの
で
確認.
赤丸
がブレークポイン
トの印
•
V
isual Stu
dio 201
5
で、デバッガーを
起動しなさい.
•
「
printf
」の行で、
実行が中断すること
を確認しな
さい
あとで使
う
ので、中断したまま
にしておくこと
20
「デバッグ」
→
「
デバッグの開始
」
「
printf
」の行で実行が
中断している
•
「
printf
」の行で、
実行が中断した状態
で、変数の
値を表示させなさい
.手順は次の通り.
21
①
「デバッグ」
→
「
ウ
インド
ウ
」
→
「
ロー
カル
」
②
変数名と値の対応表が
表示される
•
最後に、プログラム実行の再開の操作を行いなさ
い。これで、デバッ
ガーが終了する。
22
「デバッグ」
→
「
続行
」
•
次のよ
う
に書き替えて、同
じ手順を繰り返しな
さ
い
.
•
そして,変数
a
の値を確認し
なさい
23
add
加算
•
次のよ
う
に書き替えて、同じ手順を繰
り返しなさ
い
.
•
そして,変数
a
の値を確認し
なさい
24
sub
加算
•
書き替
えて、同じ手順を
繰り返しなさい
.
•
そして,変数
a
の値を確認し
なさい
25
imul
乗算
次ページに解説
26
アセンブリ言語の
プログラム
①
a
に
30
をセット
②
a
×
20
の結果を、
レジスタ
eax
にセット
③
a
に
レジスタ
eax
の
値をセット