開発環境 |
Microsoft Visual Studio Community 2019 |
実行環境 |
Microsoft Windows 10 Home (64bit) |
プロジェクトの作成
メニューから[ファイル]-[新規作成]-[プロジェクト]を選択。
プロジェクト テンプレート |
空のプロジェクト(C++) |
プロジェクト名 |
hello2019c |
asmファイルの追加
プロジェクトのディレクトリにhello2019c.asmという空のファイルを作る。
メニューから[プロジェクト]-[既存の項目の追加]を選択。
.model flat, c
NULL equ 0
STD_OUTPUT_HANDLE equ -11
ExitProcess proto stdcall, :dword
GetStdHandle proto stdcall, :dword
WriteConsoleA proto stdcall, :dword, :dword, :dword, :dword, :dword
.data
msg byte 'hello, world', 0dh, 0ah
msglen equ $ - msg
.code
main proc
local hConsole:dword
local written:dword
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov hConsole, eax
invoke WriteConsoleA, hConsole, addr msg, msglen, addr written, NULL
invoke ExitProcess, 42
ret
main endp
end main
ビルドのカスタマイズ
ソリューション エクスプローラーのプロジェクト(hello2019c)を右クリックし、[ビルドの依存関係]-[ビルドのカスタマイズ]を選択。
masm(.targets, .props)にチェックを付ける。
hello2019c.asmを右クリックし、[プロパティ]を選択。
項目の種類 |
Microsoft Macro Assembler |
ビルド
ツールバーの項目を設定。
ソリューション構成 |
Release |
ソリューション プラットフォーム |
x86 |
ソリューション エクスプローラーのプロジェクトを右クリックし、[プロパティ]を選択。
システム |
サブシステム |
コンソール (/SUBSYSTEM:CONSOLE) |
最適化 |
リンク時のコード生成 |
(削除) |
- Microsoft Macro Assembler
Listing File |
List All Available Information |
はい (/Sa) |
|
Assembled Code Listing File |
$(IntDir)%(FileName) |
Advanced |
Use Safe Exception Handlers |
はい (/safeseh) |
メニューから[ビルド]-[ソリューションのビルド]を選択。(Ctrl+Shift+B)
hello2019c.lst から抜粋
.
00000000 main proc
local hConsole:dword
local written:dword
00000000 55 * push ebp
00000001 8B EC * mov ebp, esp
00000003 83 C4 F8 * add esp, 0FFFFFFF8h
invoke GetStdHandle, STD_OUTPUT_HANDLE
00000006 6A F5 * push -00000000Bh
00000008 E8 00000000 E * call GetStdHandle
0000000D 89 45 FC mov hConsole, eax
invoke WriteConsoleA, hConsole, addr msg, msglen, addr written, NULL
00000010 6A 00 * push +000000000h
00000012 8D 45 F8 * lea eax, dword ptr ss:[ebp]+0FFFFFFF8h
00000015 50 * push eax
00000016 68 0000000E * push +00000000Eh
0000001B 68 00000000 R * push OFFSET msg
00000020 FF 75 FC * push dword ptr ss:[ebp]+0FFFFFFFCh
00000023 E8 00000000 E * call WriteConsoleA
invoke ExitProcess, 42
00000028 6A 2A * push +00000002Ah
0000002A E8 00000000 E * call ExitProcess
ret
0000002F C9 * leave
00000030 C3 * ret 00000h
00000031 main endp
実行
メニューから[デバッグ]-[デバッグなしで開始]を選択。(Ctrl+F5)
最終更新:2020年10月18日 17:16