• ベストアンサー

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

パソコン初心者です。 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」から入力しても同様のコメントが返ってきます。 プログラムを実行するにはどうすればよいでしょうか?

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

  • ベストアンサー
  • ballville
  • ベストアンサー率47% (233/487)
回答No.2

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と表示されていれば成功

kgztabq
質問者

お礼

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

kgztabq
質問者

補足

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

その他の回答 (4)

回答No.5

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

参考URL:
http://ruffnex.oc.to/kenji/text/asmbook/
回答No.4

少し勘違いなさっているかもしれません。前回の説明で、 >> 作成なさったプログラムは16bit と書きましたが、これは「作成されたプログラムだけ」が16bitという意味です。したがいまして、その他の作業は32bit環境で実行しなければなりません。 NASMでアセンブルするときは、通常(32bit環境)のコマンドプロンプトで行い、実行プログラム(何とか.exe)が生成されたら、16bitのコマンドプロンプトを起動して実行・・・という手順になります。お試しください。

回答No.3

WinXPで通常起動されるコマンドプロンプトは、「32bit対応」だからではないでしょうか。以下のいずれかの方法で「16bitのコマンドプロンプト」を起動して実行した場合はいかがでしょうか。 (1)通常のコマンドプロンプトから“command”とタイプして出現するコマンドプロンプトで実行する。 (2)「スタート」から「ファイル名を指定して実行」をクリック。「名前」の欄に“command”とタイプして出現するコマンドプロンプトで実行する。 上記のいずれの方法でも、16bitのコマンドプロンプトが起動されます。作成なさったプログラムは16bitなので、これで動くと思いますが・・・。自身で実行していませんので、参考にしてください。 なお、この方法で起動したコマンドプロンプトをそのまま閉じようとするとエラーではありませんが、警告が出ます。そのまま閉じてもいいですが、以下の方法で終了してください。 (1)で起動したときは、16bitのコマンドプロンプト上で“exit”とタイプすると、32bitバージョンに戻ります。その後、ウィンドウを閉じることができます。 (2)の方法で起動したときは、同じく“exit”をタイプすることでコマンドプロンプトそのものが終了します。

kgztabq
質問者

補足

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

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

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

kgztabq
質問者

お礼

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

関連するQ&A

  • アセンブラが実行しません

    パソコン初心者です。 これからアセンブリ言語を学ぼうと思っています。 アセンブラとしてNASMをDドライブにダウンロードしました。 環境変数の設定でPATHにNASMをダウンロードしたディレクトリを追加しました。 試しに、アセンブリの簡単なプログラムを実行しようとしましたが、 「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません」と表示されます。 これはどういうことでしょうか? どうすれば、アセンブラが実行できるのか教えてください。 お願いします。

  • NASMについての質問です。

    NASMについての質問です。 mov ah, 02h mov dl, 31h int 21h という内容のASMファイルをつくり、それをNASMで実行ファイルにし、実行しようとしたのですが、うまくいきません。 コマンドプロンプトで、 nasm.exe -f bin test.asm -o myfile.com というコマンドを打って実行ファイルにしました。きちんとmyfile.comは作られるのですが、しかし、myfile.comを実行しても何も表示されませんでした。(なぜかコマンドプロンプトの文字のフォントが変わりましたが) それならと思い、今度は、 nasm.exe -f bin test.asm -o myfile.exe というコマンドを打ち、実行してみました。ちゃんとmyfile.exeは作成されるのですが、やはりうまく実行できません。上のソースコードなら、文字が一文字表示されるはずですが、なにも表示されませんでした(前回と同じくコマンドプロンプトのフォントが変わっただけです)。 当方、一応コンピュータ系の専門学校に通っているのですが、アセンブラのことについては完全な初心者です。NASMをさわるのも初めてです。わけがわからなくて困っています。 どうにかしてアセンブリ言語のコードを実行ファイルにして、それを動かしてみたいのですが、どうすればいいでしょうか? 追伸 長文すいません。

  • NASMでソースプログラムのアセンブルが出来ないです。

    nasm2.08.01.win32.zipをダウンロードしコマンドプロンプトのpathを指定しメモ帳でソースプログラムを ; myfile.asm  org 100H section .text start: mov ah, 02Hmov dl, 41H int 21H mov ah, 4CH int 21H と記述し拡張子asmで保存したものを コマンプロンプトでnasm -f bin myfile.asm -o myfile.com で開始しようするとunable to open input myfile.asmで出てしまい アセンブル出来ません、OSはXPです、アセンブリ言語の勉強をしたいのですがNASMが機能しないと始まらないので非常に困っています、 詳しい方にお力添え頂けたら幸いです、どうぞよろしくお願いします。

  • NASMが動かない。

    NASMをwindows7にインストールしました。 次のようなソースをmathandcomp.asmというファイル名で保存し、 コマンド・プロンプトで nasm mathandcomp.asm -o mathandcomp.com のようにすると、mathandcomp.comが生成されるそうですが、エラーが出てしまいます。 下記のメッセージが出るはずなんですが、手順をおしえていただけますか。 NASMのバージョンはnasm-2.08.01です。 http://www.nasm.us/ org 100h mov dx,mesg mov ah,9 int 21h mov ah,4Ch int 21h mesg db 'Math with PC,PC through Math! How wonderful!',0Dh,0Ah,'$'

  • アセンブラについての質問です

    学校からの課題でキーボードから1文字入力し、アルファベットの大文字なら小文字に、小文字なら大文字に変換して表示するプログラムでリターンキーが押されるまで繰り返すというもので mov ah 1 int 21h sub al '0' xor al 0dh mov dl al add dl '0' mov ah 2 int 21h までやってたんですが繰り返しの所がよく分かりません 調べたんですが難しくて分かりませんでした どなたか、教えて頂けないでしょうか?出来れば、方法だけでなくソースも書いて頂けると有り難いのですが・・・ よろしくお願いします。

  • アセンブラできません。

    初心者です。 アセンブリ言語で1~9の数字を連続的に表示するプログラムを書いたのですが、アセンブラする時 「error A2016 expression expected」というエラーメッセージが出てアセンブラすることができません。 プログラムの内容は下記↓のものです。 何が原因でしょうか? CODE SEGMENT ASSUME DS:CODE,CS:CODE,ES:CODE,SS:CODE ORG 100h START: mov bl,30h jmp aa aa: mov ah,02h mov dl,bl int 21h mov ah,06h mov dl,0ffh int 21h jnz bb: mov ah,02h mov dl,08h int 21h inc bl cmp bl,39h ja START jmp aa bb: int 20h CODE ENDS END START

  • NASM(独習アセンブラのサンプルソース)について

    独習アセンブラ初版5刷のサンプルソース(リスト6.7、102p)での疑問です 下の方にあるコメントアウトしているputc関数って何のためにあるんですか? どこからも呼び出してないのでいらないと思うのですが… アセンブラはNASMです ※本に書かれてるソースはコメントアウトしてません、コメントアウトしてもアセンブルできました bits 16 org 100h mov dx,sfile mov al,0 mov ah,3dh int 21h jc endquit mov [ifh],ax mov dx,dfile mov cx,0 mov ah,3ch int 21h jc endquit mov [ofh],ax readb: mov bx,[ifh] mov dx,buf mov cx,1 mov ah,3fh int 21h test cx,ax jz endquit jc endquit mov bx,[ofh] mov dx,buf mov cx,1 mov ah,40h int 21h jmp readb endquit: mov bx,[ifh] mov ah,3eh int 21h mov bx,[ofh] mov ah,3eh int 21h mov ax,4c00h int 21h ;putc: ; push ax ; mov ah,2h ; int 21h ; pop ax ; ret ifh dw 0 ofh dw 0 sfile db "srcfile.txt",0 dfile db "destfile.txt",0 buf resb 2 私が思うにリスト6.6(100p)のreadbラベルのところでこれを呼び出してるのでソースを流用して消し忘れてるだけなんでしょうか?

  • アセンブラ、ファンクションコールの使い方

    入力した一文字を改行して表示させるものを作ってます。 以下のものを書いてみまして、 一文字読み取って改行はしますが表示されません。 アドバイス頂けますでしょうか? 環境は MASM 32 です。 name double .model small .stack 100 .data prompt db 0ah,0dh,"? $" .code start: mov ax, @data mov ds, ax lea dx, prompt mov ah, 9 ;output string int 21h mov ah, 1 ;get keyboard input and store into al int 21h mov dl, 0ah mov ah, 2 int 21h mov dl, 0dh mov ah, 2 int 21h mov dl, al mov ah, 2 ;output char from dl int 21h mov ax, 4c00h ;exit int 21h end start

  • アセンブラ

    nasmは持っているのですが、nasmでコンパイルしたプログラムはcmd.exeから実行してもできません(結果がうまく表示されません)。 わざわざCOMMAND.comから実行しなくてはいけないのですがとても面倒です。。。 そこでcmd.exeで実行できるプログラム(exeファイル)を作れるアセンブラを探しています。 知っている人がいたら教えてください。 それから、よくわからないのですが axレジスタじゃなくてeaxレジスタを使うプログラムってなんていうんですか??

  • BIOSによる表示

    こんばんわ。お世話になります。 今, 自分はフロッピーをさした状態でPCの電源を入れるとそのフロッピーに格納されているプログラムが動くようにしたいと思っています。 その手始めとして, 文字を表示させたいのですが, どうもよくわかりません。 今までに自分は mov ah,0 mov al,03 int 10h で画面設定をし, mov ax,b800 mov es,ax mov di,0 mov byte ptr es:[di],41 mov ax,ff00 int 10h hlt なんてアセンブラを書きましたがwindows付属のdebugではこれはコンパイルできません。コンパイルできたと仮定して, これをrawriteでフロッピーに書き込むつもりです。 現在, 私のもとにある最も簡単なアセンブラはdebugです。nasmもありますが, 不勉強のため 使い方が良くわかりません。 有効なソースをお教えください。よろしくお願いします。

専門家に質問してみよう