Archive for 1月 4th, 2012

  1. Hello, MASM World!

    Posted on 1月 4th, 2012 by cx20

    MASM

    MASM はマイクロソフト社製のアセンブリ言語である。正式名称は Microsoft Macro Assembler。Visual C++ に付属している。

    ソースコード(32bit版)

    .MODEL flat
    EXTRN   _printf:PROC
     
    _DATA   SEGMENT
    msg     DB      'Hello, MASM World!', 0aH, 00H
    _DATA   ENDS
     
    _TEXT   SEGMENT
    _main   PROC
            push    OFFSET msg
            call    _printf
            add     esp, 4
            xor     eax, eax
            ret     0
    _main   ENDP
    _TEXT   ENDS
    END

    ソースコード(64bit版)

    EXTRN   printf:PROC
     
    _DATA   SEGMENT
    msg     DB      'Hello, MASM World!', 0aH, 00H
    _DATA   ENDS
     
    _TEXT   SEGMENT
    main    PROC
            sub     rsp, 40
            lea     rcx, OFFSET msg
            call    printf
            xor     rax, rax
            add     rsp, 40
            ret     0
    main    ENDP
    _TEXT   ENDS
    END

    上記コードは以下のC言語のソースを VC++ でアセンブリコード出力(cl /FA hello.c)したものに相当する。

    #include <stdio.h>
     
    int main( int argc, char* argv[] )
    {
        printf( "Hello, MASM World!n" );
        return 0;
    }

    コンパイル&リンク方法(MASM 32bit版)

    C:¥> ml -c hello.asm
    C:¥> link hello.obj libcmt.lib

    コンパイル&リンク方法(MASM 64bit版)

    C:¥> ml64 -c hello64.asm
    C:¥> link hello64.obj libcmt.lib

    実行結果

    Hello, MASM World!