「ASM/hello64c」の編集履歴(バックアップ)一覧に戻る

ASM/hello64c - (2017/11/07 (火) 21:04:50) のソース

|開発環境|Microsoft Visual Studio Community 2017|
|実行環境|Microsoft Windows 10 Home (64bit)|
#table_zebra(project, #fff, #eee)

参考
-[[x64 アセンブリーの概要>https://www.isus.jp/others/introduction-to-x64-assembly/]]

-任意のディレクトリを用意する(例 C:\Projects\masm64\hello64c)

hello64c.asm
#highlight(asm){{
comment *
	hello64c.asm for ML64

ml64 /c /Fl hello64c.asm
link /entry:start /subsystem:windows hello64c
*

extern ExitProcess: proc
extern MessageBoxA: proc

includelib kernel32.lib
includelib user32.lib

.const
caption db "hello64",0
message db "hello, world",0

.code
start proc
	sub rsp, 28h
	mov rcx, 0
	lea rdx, message
	lea r8, caption
	mov r9, 0
	call MessageBoxA
	mov ecx, eax
	call ExitProcess
start endp

end
}}

dev.bat
#highlight(text){{
path %path%;"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\Hostx64\x64"
set lib="C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\x64"
cmd
}}

-dev.batを実行し、アセンブル・リンクを行う。

#image(hello64c_1.png)

hello64c.lst
#highlight(text){{
Microsoft (R) Macro Assembler (x64) Version 14.11.25547.0   11/03/17 09:58:49
hello64c.asm						     Page 1 - 1


				comment *
					hello64c.asm for ML64

				ml64 /c /Fl hello64c.asm
				link /entry:start /subsystem:windows hello64c
				*

				extern ExitProcess: proc
				extern MessageBoxA: proc

				includelib kernel32.lib
				includelib user32.lib

 00000000			.const
 00000000 68 65 6C 6C 6F	caption db "hello64",0
	   36 34 00
 00000008 68 65 6C 6C 6F	message db "hello, world",0
	   2C 20 77 6F 72
	   6C 64 00

 00000000			.code
 00000000			start proc
 00000000  48/ 83 EC 28			sub rsp, 28h
 00000004  48/ C7 C1			mov rcx, 0
	   00000000
 0000000B  48/ 8D 15			lea rdx, message
	   00000008 R
 00000012  4C/ 8D 05			lea r8, caption
	   00000000 R
 00000019  49/ C7 C1			mov r9, 0
	   00000000
 00000020  E8 00000000 E		call MessageBoxA
 00000025  8B C8			mov ecx, eax
 00000027  E8 00000000 E		call ExitProcess
 0000002C			start endp

				end


Microsoft (R) Macro Assembler (x64) Version 14.11.25547.0   11/03/17 09:58:49
hello64c.asm						     Symbols 2 - 1




Segments:

                N a m e                  Length   Align   Class

CONST  . . . . . . . . . . . . .	 00000015 16	  'CONST'	 ReadOnly


Procedures, parameters, and locals:

                N a m e                 Type     Value    Attr

start  . . . . . . . . . . . . .	P 	 00000000 _TEXT	Length= 0000002C Public


Symbols:

                N a m e                 Type     Value    Attr

ExitProcess  . . . . . . . . . .	L 	 00000000 External
MessageBoxA  . . . . . . . . . .	L 	 00000000 External
caption  . . . . . . . . . . . .	Byte	 00000000 CONST	
message  . . . . . . . . . . . .	Byte	 00000008 CONST	

	   0 Warnings
	   0 Errors
}}