masm32でのアセンブリ言語学習に関する問題

このQ&Aのポイント
  • masm32を使用してアセンブリ言語を学ぼうとしましたが、うまく動作しません。
  • インストール手順を正しく行いましたが、ソースコードを保存した場所によってアセンブラが機能しない問題が発生しました。
  • 解決策として、ソースコードの保存場所を特定のフォルダに変更することで問題を解決することができます。
回答を見る
  • ベストアンサー

masm32がうまく動きません。

アセンブリ言語を学ぼうとmasm32をインストールしました。 インストール手順は下記のように行いました。 ・masm32を C:\ にインストール ・masm32のbinフォルダの中にあるlink.exeをlink32.exeに名前を変更し、16bitリンカLINk.exeをbinフォルダに投入 ・システム環境変数に SET PATH=C:\MASM32\BIN;%PATH% SET INCLUDE=C:\MASM32\INCLUDE;%INCLUDE% SET LIB=C:\MASM32\LIB;%LIB% を書き加える。 ソースをC:\に保存し、アセンブラしてみると C:\>ml /c /Fl test.asm 'ml'は内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません。 と出ます。 ソースの保存場所をC:\masm32\binに変えて C:\masm32\bin>ml /c /Fl test.asm の形でアセンブラすることはできます。 ソースをC:\に保存した状態でアセンブラできない原因は何が 考えられるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.1

>・システム環境変数に >SET PATH=C:\MASM32\BIN;%PATH% >SET INCLUDE=C:\MASM32\INCLUDE;%INCLUDE% >SET LIB=C:\MASM32\LIB;%LIB% >を書き加える。 システムのプロパティの[詳細]タブの[環境変数]に、この通りにシステム環境変数を書き加えているんですか? もし、そうでしたら、設定方法が違います。この書式はバッチファイル内で設定する場合の書式ですし、そのバッチファイル中でしか機能しない一時的なものです。 システム環境変数の一覧から"PATH"を選択し[編集]をクリックします。 変数名 [PATH] 変数値 [%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;] 等と表示されますから、変数値の先頭に"C:\MASM32\BIN;"を書き加えます。 変更後は、 変数値 [C:\MASM32\BIN;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;] となります。 "INCLUDE"と"LIB"は通常Windowsでは設定されていない変数名のはずですから、[新規]をクリックし、 変数名 [INCLUDE] 変数値 [C:\MASM32\INCLUDE] 変数名 [LIB] 変数値 [C:\MASM32\LIB] を追加します。もし、既に設定されている場合には、"PATH"同様に先頭に追加します。

ojkdjskaja
質問者

お礼

回答有難うございます。 無事解決しました。 かなり初歩的なことですが、うまくいってとても感動してます。(^^) 有難うございました。

関連するQ&A

  • フリーソフトMASM32に関する質問

    MASM32は、環境変数は、自分で設定しなければならないみたいなので、環境変数を以下のように設定したのですが MSDOSで、コンパイルのコマンドを打つと、エラーがでます これはどうすれば解決するのでしょうか ついでに使ってるOSはMeです ↓が付け加えた環境変数と、コンパイルのコマンドです SET PATH=C:\MASM32\BIN;%PATH% SET INCLUDE=C:\MASM32\INCLUDE;%INCLUDE% SET LIB=C:\MASM32\LIB;%LIB% コマンド ml /c test.asm

  • masm32の設定

    プログラミング初心者です。 この度アセンブリ言語を勉強しようと思い、MASM32 version10をダウンロードし、C:\masm32 というディレクトリにインストールしました。 次に、PATHにC:\masm32\binを追加して,mlコマンドのパスの設定をしました。 そして、以下のようなプログラムを作りました。 ファイルはD:\masm\hello.asmとしました。 ; hello.asm   include \masm32\include\masm32rt.inc   .code start:   print "hello, assembler",13,10   exit end start これをアセンブルしようと思い、 D:\masm>ml /c /coff hello.asm として実行すると Micorosoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved. Assembling: hello.asm hello.asm(3) : fatal error A1000: cannnot open file : \masm32\include\masm32rt.inc と出てエラーになってしまいます。インクルードファイルにパスが通っていないのでしょうか。いろいろ調べてみましたが、分かりません。 どのようにすれば解決できるでしょうか。 力を貸してください。よろしくお願いします。

  • MASMでexe作成

    Visual Cに入っていたMASM(ml.exe)で http://www7.plala.or.jp/keny01/asm/win32/#sub1-5 にあるソースをアセンブルすると、objファイルは正常に作成されるようですが、それをexeにする方法がわかりません。この時Visual Cは使用せず、mlをコマンドプロンプトから呼び出しています。mlに指定するオプションはよくわからない物が多いので何も指定していません。 具体的にどのようなソフトを使ってexeにすればよいのでしょうか。

  • MASMのincludeの設定

    MASMのincludeの設定 現在はソースのinclude \masm32\include\windows.incなどをフルパスに置換してコンパイルしています。 AUTOEXEC.BATのPATHにincludeフォルダのフルパスを追加するとソースの置換をせずにコンパイルできると思いますがAUTOEXEC.BATは変更したくありません。 MASMの設定ファイルやml.exeの設定ファイルなどでincludeフォルダのフルパスを指定するような解決方法はありませんか?

  • NASMとMASMの違い

    NASMとMASNの違いってなんでしょうか? NASMは今日趣味でちょこっと触っただけです。 MASMは触ったことはありません。 実際に動くアセンブリ言語のソースを見てみようと思い、 海外のサイトから適当に*.asmのソースをダウンロードしました。 ソースを覘くと、 \masm32\include\windows.inc と明らかにMASMの何かを参照しています。 NASMではコンパイルできる気がしません。 NASMとMASMでは記述法方が変わるのでしょうか? NASMではMASMで書かれたソースはコンパイルは不可能なのでしょうか? 素人の私が根本的に勘違いしている可能性もあります。 ご存知の方がおられましたら、ご伝授よろしくお願いします。

  • Borlandbcc55とMYSQLのコンパイル時にlibmysql.libやmysqlclient.libのリンクについて

    Windows上で、borlandbcc55、mysqlを利用しいてます。 Windows上のborlandbcc55、mysqlで C/C++のソースでMYSQLの接続・切断・管理・MYSQLのレコードの値の取得・値の表示の仕方の基礎を教えてください。 これなら動きますよというソースを教えて頂けたら有難いです。 Borlandbcc55とmysqlの設定 my_global.hとmysql.hをincludeして、 コンパイル時にlibmysql.libやmysqlclient.libをリンクしてやればできそうなのですが includeは Cのソースで #include "c:\mysql\include\mysql.h" #include "c:\mysql\include\my_global.h" と記述するだけでOKなのでしょうか? MYSQLのLibmysql.libの設定の仕方及びコンパイル時にlibmysql.libやmysqlclient.libを リンクする方法がわかりません。 bcc55コンパイラ設定のcfgファイルにlibMysql.libやmysqlclient.libを 追加設定必要ですか? 必要ならどう記述すればいいのでしょうか? また違う仕方なのでしょうか? 全く理解できていません。 そのリファレンスをみてもわかりません。 1 coff2omf c:\mysql\lib\opt\libmysql.lib c:\borland\bcc55\lib\libmysql.lib 2 ilink32 obj-Dateien, exe-Dateiname, map-Datei, Libraries 3 -> ilink32 c0x32.obj testmysql.obj , testmysql.exe , , import32.lib cw32.lib libmysql.lib これらの設定の仕方もわかりません。 設定に必要なのかどうかも理解できていません。 よろしくお願いします。

  • アセンブリの実行ファイルをソースに変換する

    アセンブリの実行ファイルをソースファイルに逆アセンブラしたいのですが、方法が見つかりません。 どうすればexeファイルからasmファイルに戻すことが出来るんでしょうか?

  • アセンブラからCの関数を呼び出すには?

    「OS自作入門」を読んで試しています。 フロッピーのブートセクタに自作のブートプログラムを 書き込み、ブートプログラムから自作のOSを呼び出して実行 しています。自作といっても前述の参考書の物まねですが・・・・。 ここまでは全てアセンブラでプログラムを書いてきました。 NASMを使っています。ずっとアセンブラではきついので C言語で書きたいのです。 まずは自作のOSからCで書いた関数を呼び出して実行したいの です。つまり・・・ OS.ASM + TEST.C→OS.BIN としたいのです。OS.ASMは自作のOSです。TEST.CにはCの関数を 書いておき、OS.ASMから呼び出すようにします。 これらをくっつけてOS.BINというファイルにしたいのです。 どうすればいいでしょうか?  (1) ブートプログラムの中で16ビットモードから32ビットモードに 切り替えており、自分でセグメントを決めてあります。TEST.Cも それにあわせる必要があるかと思いますが、どうすれば? (2) OS.ASMとTEST.Cをどうやってくっつけるのかがわからない。 リンカーとか使うのでしょうか?

  • EXE作成時のエラーで・・。

    いろいろ確認してみたのですが自分では判らなかったので、どなたか同じような経験をされた方がいればお教えください。 元々あったLibファイルに新たに処理を追加して作成しなおしました。 XXX.libファイルは正常に作成されました。 追加した処理によるヘッダファイルなどの新たな include処理はありませんでした。 次にlibファイルを使用しているEXEを再作成し様としたところリンク時に以下のエラーが出てEXEが作成できなくなっております。 d:\msvc\lib\LLIBCE.lib(dos\diffhlp.asm) : error L2025: __AHSHIFT : シンボルが 2 回以上定義されています。 VC++ Ver1.51を使用しております。 もしわかる方居られましたらアドバイス下さい。よろしくお願いします。

  • コンパイル~リンクを行いたいのですが

    freecommandlinetools2というものをインストールしたのですが、それを使用する際 C:\borland\Project\1 にcのソースファイル1_4.cがあるとして 以下のコマンドでコンパイル~リンクまで行う --コマンド-------------------- cd C:\borland\Project\1<enter> set path=C:\borland\bcc55\Bin<enter> bcc32 -I"C:\borland\bcc55\Include" -L"C:\borland\bcc55\Lib" 1_4.c<enter> ---------------------------- コンパイルエラー、リンク時のエラーがなければ C:\borland\Project\1フォルダに2_4.exe が作成されており、 コマンドプロンプトから実行する。 と、書かれていました。 コマンドプロンプトの使用フォルダをCドライブに変更したので、cdはいらないと思い、borland\Project\1でエンターキーを押したのですが、『内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません』としかなりません。そもそも<enter>というのは、エンターキーのことで良いのでしょうか? 右も左も判らない状態で、どう調べればいいのかも判らず困っています。 無知で恥ずかしいのですが、どなたかお教え頂けないでしょうか。

専門家に質問してみよう