みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

アセンブラを実行したいのですが

パソコン初心者です。
Windows XPにアセンブラ「NASM」をダウンロードしました。
コマンドプロンプトで簡単なプログラムを実行しようと思います。
以下がプログラムです。
; dispchar.asm
mov ah,02
mov dl,31h
int 21h

mov ah,4ch
mov al,0
int 21h

コマンドプロンプトに「; dispchar.asm」と入力すると、内部コマンド、外部コマンドまたは操作可能なファイル、バッチファイルとして認識されていません」と出ます。
同様に、「mov ah,02」から入力しても同様のコメントが返ってきます。
プログラムを実行するにはどうすればよいでしょうか?

投稿日時 - 2007-02-11 11:41:22

QNo.2742855

すぐに回答ほしいです

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

1 nasmw.exeのあるディレクトリでコマンドプロンプトを開きます。
2 notepad test.sを入力
3 メモ帳が立ち上がり「test,sを作成しますか」と聞かれるので「はい」
  を選択
4 ; dispchar.asm
  mov ah,02
  mov dl,31h
  int 21h
  …
  をメモ帳に打ち込み、保存して閉じる。
5 nasmw test.s -o test.exeをコマンドプロンプトに打ち込む。
6 dirで、test.exeができているか確認
7 testを実行し、コマンドプロンプトに1と表示されていれば成功

投稿日時 - 2007-02-11 12:14:59

補足

ご回答ありがとうございます。
6のtest.exeを作成するところまでできました。
しかし、7でコマンドプロンプトでtestを実行すると
「¥testは有効なWin32アプリケーションではありません」と表示され、コマンドプロンプトには、「アクセスが拒否されました」と出ます。
これはどういう意味でしょうか?また、どうすればよいですか?

投稿日時 - 2007-02-11 14:34:48

お礼

ご回答ありがとうございました。

投稿日時 - 2007-02-17 10:10:17

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

参照URLを最初から読み進めていっていただくのが一番いいとは思いますが、
とりあえずこの件については「16ビットNASMプログラミング」章の中の「コンパイル」のところを良く読んでみてください。

参考URL:http://ruffnex.oc.to/kenji/text/asmbook/

投稿日時 - 2007-02-12 11:39:43

ANo.4

少し勘違いなさっているかもしれません。前回の説明で、

>> 作成なさったプログラムは16bit

と書きましたが、これは「作成されたプログラムだけ」が16bitという意味です。したがいまして、その他の作業は32bit環境で実行しなければなりません。

NASMでアセンブルするときは、通常(32bit環境)のコマンドプロンプトで行い、実行プログラム(何とか.exe)が生成されたら、16bitのコマンドプロンプトを起動して実行・・・という手順になります。お試しください。

投稿日時 - 2007-02-12 11:04:18

ANo.3

WinXPで通常起動されるコマンドプロンプトは、「32bit対応」だからではないでしょうか。以下のいずれかの方法で「16bitのコマンドプロンプト」を起動して実行した場合はいかがでしょうか。

(1)通常のコマンドプロンプトから“command”とタイプして出現するコマンドプロンプトで実行する。
(2)「スタート」から「ファイル名を指定して実行」をクリック。「名前」の欄に“command”とタイプして出現するコマンドプロンプトで実行する。

上記のいずれの方法でも、16bitのコマンドプロンプトが起動されます。作成なさったプログラムは16bitなので、これで動くと思いますが・・・。自身で実行していませんので、参考にしてください。

なお、この方法で起動したコマンドプロンプトをそのまま閉じようとするとエラーではありませんが、警告が出ます。そのまま閉じてもいいですが、以下の方法で終了してください。

(1)で起動したときは、16bitのコマンドプロンプト上で“exit”とタイプすると、32bitバージョンに戻ります。その後、ウィンドウを閉じることができます。
(2)の方法で起動したときは、同じく“exit”をタイプすることでコマンドプロンプトそのものが終了します。

投稿日時 - 2007-02-11 23:04:30

補足

「16bitのコマンドプロンプト」で実行してみました。
回答No.2の方法でやってみると、プログラムを実行ファイルに生成する段階で「NASM:FATAL:UNABLE TO OPEN INPUT TEST.S」と表示されます。
これはどういう意味でしょうか?また、どう対処すればよいですか?

投稿日時 - 2007-02-12 09:30:06

ANo.1

書いたプログラムソースをアセンブルして機械語にしないと実行できません。
コマンドプロンプトで簡単なプログラムを作成したい場合はアセンブリではなく別の選択肢を検討した方が良いでしょう。

投稿日時 - 2007-02-11 12:08:07

お礼

ご回答ありがとうございました。

投稿日時 - 2007-02-11 14:34:31

あなたにオススメの質問