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   
---------------------------

Tags:

Categories: assembler, library, MASM, Win32 API

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

WP-SpamFree by Pole Position Marketing