Archive for 4月 17th, 2012
-
Hello, Win32 API(MASM) World!
Posted on 4月 17th, 2012 by cx20
Win32 API(MASM)
Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
以下は MASM からの呼出し例である。ソースコード(MASM)
; Listing generated by Microsoft (R) Optimizing Compiler Version 14.00.50727.762 TITLE hello.c .686P .XMM include listing.inc .model flat INCLUDELIB LIBCMT INCLUDELIB OLDNAMES _DATA SEGMENT $SG77810 DB 'Hello, World!', 00H ORG $+2 $SG77811 DB 'Hello, Win32 API(MASM) World!', 00H _DATA ENDS PUBLIC _main EXTRN __imp__MessageBoxA@16:PROC ; Function compile flags: /Odtp _TEXT SEGMENT _argc$ = 8 ; size = 4 _argv$ = 12 ; size = 4 _main PROC ; File hello.c ; Line 4 push ebp mov ebp, esp ; Line 5 push 0 push OFFSET $SG77810 push OFFSET $SG77811 push 0 call DWORD PTR __imp__MessageBoxA@16 ; Line 6 xor eax, eax ; Line 7 pop ebp ret 0 _main ENDP _TEXT ENDS END
上記コードは、下記の C のソースを「cl hello.c /FA」にてアセンブラ出力したものである。
ソースコード(C言語)
#include <windows.h> int main( int argc, char* argv[] ) { MessageBoxA( NULL, "Hello, Win32 API(MASM) World!", "Hello, World!", MB_OK ); return 0; }
コンパイル方法(Visual C++)
C:¥> ml hello.asm C:¥> link hello.obj user32.lib
実行結果
--------------------------- Hello, World! --------------------------- Hello, Win32 API(MASM) World! --------------------------- OK ---------------------------