評価版を入れてた人は、プロダクトキーを入れると、そのまま使えまする
Hyper-V上のPCだったら、適当なタイミングでスナップショットをとっておいて、そこに戻してインストールすれば綺麗な環境でセットアップできるです
この二つ、知ってるのと知らないのとでは、苦労が凄く違うと思ったの。
Native ニーモニックなプロジェクトは…
http://blogs.wankuma.com/tocchann/archive/2010/07/28/191731.aspx
MASMを動かしてみた~VisualStudioで
http://blogs.wankuma.com/esten/archive/2010/07/28/191730.aspx
のエントリの補足~
VisualStudio2008(Professional以上 もしくはExpressでSP1導入済み)の場合、
作成したC++(C)のプロジェクトのところで右クリックすると、メニューが出てくるの。
ここの「カスタム ビルド規則」ってのを選択すると、
がでてくるから、これの*.asmを選択すればOK。
まっさらのプロジェクトにasmファイルを新規追加した時にも「カスタムビルド規則の変更」確認ダイアログがでるので素直に「OK」すれば大丈夫みたい。
いろいろと試行錯誤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!」になれば成功
できたー♪
ひどりん、コメント&ヒントさんきうです。
まだ文字列操作の勉強はこれから。まずは四則計算ってことで足し算をしてみた。
環境はお気楽に、VisualStudio2008 を使ってみることにする。
VisualStudio2008で、C++の新規プロジェクトを作成して、新規ソースを追加
#include "stdafx.h"
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
int dwValue;
dwValue = 5;
__asm
{
mov eax, dwValue
add eax, 100
mov dwValue, eax
}
// 結果出力
std::cout << dwValue;
// DOSプロンプトが消えないように入力待ちにする
std::cin >> dwValue;
return 0;
}
__asm{}の中がMASMのコード。
単純に、dwValueさんに100を足してるだけだから、5+100 で105が出てくるはず。
でもって、実行結果 ↓
さてと、足がかり確認。
色々と勉強開始しよう、胡桃の脳なりにorz