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