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 |
.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 |
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;
} |
#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 |
C:¥> ml -c hello.asm
C:¥> link hello.obj libcmt.lib
コンパイル&リンク方法(MASM 64bit版)
C:¥> ml64 -c hello64.asm
C:¥> link hello64.obj libcmt.lib |
C:¥> ml64 -c hello64.asm
C:¥> link hello64.obj libcmt.lib
実行結果
Tags: MASM
Categories: assembler, MASM