いろいろと試行錯誤orz くるしんだよ、べいべぇ。
なにしろ、VisualStudioのファイルテンプレにASMがいない
ので、作っちゃいけないのかなーと頭を抱えてたんだよねぇ。
でも、「拡張子asmでファイルをプロジェクトにいれて作って良い」ということに気付いたら、後は何とかなったw
というわけで、新規コンソールアプリ作って、ソースファイルフォルダに、hoge.asmを作成。
作ると「構成追加変更するよ」みたいなダイアログが出るので、そのままOKして適用してしまう。
; Filename: MasmHoge.ASM
.386
.MODEL flat, C
.CODE
MasmHoge PROC uses esi, arraychar:PTR
mov esi, arraychar ; Load ESI with the address of the char array.
mov BYTE PTR [esi], "H" ; Since a char is 1 byte long, each
mov BYTE PTR [esi+1], "e" ; successive element can be accessed
mov BYTE PTR [esi+2], "l" ; by adding 1 more to esi.
mov BYTE PTR [esi+3], "l" ; by adding 1 more to esi.
mov BYTE PTR [esi+4], "o" ; by adding 1 more to esi.
mov BYTE PTR [esi+5], " " ; by adding 1 more to esi.
mov BYTE PTR [esi+6], "W" ; by adding 1 more to esi.
mov BYTE PTR [esi+7], "o" ; by adding 1 more to esi.
mov BYTE PTR [esi+8], "r" ; by adding 1 more to esi.
mov BYTE PTR [esi+9], "d" ; by adding 1 more to esi.
mov BYTE PTR [esi+10], "!" ; by adding 1 more to esi.
ret
MasmHoge ENDP
END
これは、MasmHoge(char *)でそのアドレスに「Hello Word!」(Worldじゃない)を描く単純な処理w
でもって、呼び出し側
#include "stdafx.h"
/* Filename: CMAIN.C */
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
void MasmHoge (char *);
#ifdef __cplusplus
}
#endif
char chararray[11] = "abc";
int _tmain(int argc, _TCHAR* argv[])
{
printf ("%s\n", chararray);
MasmHoge (chararray);
printf ("%s\n", chararray);
}
変数配列chararrayが、「abc」から「Hello Word!」になれば成功
できたー♪
ひどりん、コメント&ヒントさんきうです。