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,'$'
No.1
- 回答日時:
エラーメッセージはなんと出ます?
# 短いから回答者側で試せ…と?
まぁ、うまく実行ファイルができたとしても…たぶん動かないと思いますが。
# int 21hのサービスコール、Windows7で使えますかねぇ…。
ご回答ありがとうございます。
すみません。エラーは、以下の2行です。
mathandcomp.asm:7:error: expression syntax error
mathandcomp.asm:8:error: parser :instruction expected
windows7では動かないのでしょうか。
No.3
- 回答日時:
XPで試してみました。
7行目と8行目は下記のように連結していますが。
> mesg db 'Math with PC,PC through Math!',0Dh,0Ah,'How wonderful!',0Dh,0Ah,'$'
command.comが起動して、そちらで実行されました。
Windows7にもcommand.comがあるかどうかは不明ですが…
この回答への補足
今、ソースの7行目と8行目を連結したら、メッセージが出ました。改行していたのがエラーを出していたことがわかりました。
ありがとうございました。
command.comとは何ですか。
vistaでも同様なエラーが出てしまうのですが、すみませんが、NASMのインストールから手順を教えていただけますか。
No.4ベストアンサー
- 回答日時:
ちなみに、7行目の最後に半角バックスラッシュ(日本語OSでは半角の\)を入れた状態でもアセンブルできます。
http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83% …
http://www.relief.jp/itnote/archives/001280.php
http://oshiete.goo.ne.jp/qa/1236976.html
などなど…
# 「バックスラッシュがないから削除した」のがエラーになった原因でしょう。
# ただし、表示される内容は#3で連結したものとは異なりますが。(改行はされない)
>NASMのインストールから手順を教えていただけますか。
掲示先のリンクから、2.08.1のWin32のZip拾ってきて、展開しただけです。
パスも通していないので、nasm.exeのある場所で実行しました。
# C:\Program Filesあたりに入れて、環境変数PATHでパスを通すのが正しいのでしょうが…
# 継続的に使用する気はないのでそこまでしていません。
# 「パスを通す」に関しては、自分で検索して下さい。(CUIのツール使おうというのならそのくらい自分で調べられるようでないと…)
>command.comとは何ですか。
16bitのMS-DOSのエミュレータ…っぽいです。
XP以降では16bitアプリに関してはいろいろ制限が入ることになりますが…その回避の為に用意されているのでしょう。
WindowsVistaやWindows7にあるかどうかは判りませんが。
http://ja.wikipedia.org/wiki/COMMAND.COM
int 21割り込み(システムコール)は、Windowsが32ビットになった時点で使用できなくなっていた…かと思います。
過渡期にMS-DOSでそういうプログラム組んだことないので細かい経緯は不明ですが。
No.5
- 回答日時:
横からすいません。
COMMAND.COMについての戯言
一般的にオペレーティングシステム(以下OS→でも、IBMの商標→昔触ったバローズだったかクロメンコのWS(ワークステーション)なんかではMSPとか言ってた気がする→Wikiでは富士通?になってる)はOS本体であるカーネルとユーザインターフェースを提供するシェルから構成されます。
「command.com」とか「cmd.exe」というのはこのシェルというのに該当し、コマンドインタープリターと言い、前者は16ビット後者は32ビットの処理がベースになっています。
あなたの作られているプログラムは16ビット処理が基本の形態(後述)なので前者のシェルで動作します。
また、UNIX系の普通のシェルと少し違うのは、ファイルコピーなど基本的なコマンドを内包しています。
Windows7では、XPモードで動作するかと思います。
あなたが作成しているプログラムは昔のOS、MS-DOSで言うところのメモリモデルの分類上「スモールモデル(100番地からはじまるプログラム)」に該当します。 これはまだ当時のPCのメモリー量が少ない時代に効率的な実行ファイル環境やメモリ管理と、もっとずっと過去のOS,CP/Mの互換性(といってもDOSではほとんど動かないけど)などから生じたもので、現在の潤沢なメモリ管理からは過去の遺物でしか有りません。
できれば、EXEファイルをはきだせるように改造されるともっと勉強になると思います。
オペレーティング・システムは書いて字のごとく「操作」という環境を提供するシステムですが、これは操作者のみを指すのではなく、プログラマが作ったプログラムからOSの操作を提供すること(例:INT21Hのファンクションコールなど)も指しています。
もう、過去の遺物かも知れませんが、言語だけじゃなく、メモリモデル、その動作環境(自作プログラムがどうやって起動されるのか)や関連ツール(アセンブラ・リンカ)などについて調べられたらいかがでしょうか。
こういう基本を抑えれば、いろいろと応用が効くと思います。
ご回答ありがとうございます。私は基礎力がないものでこれからです。
ちなみにwindows7の64bitでは動きませんでした。64ビットではコードが違うのでしょうか。
No.6
- 回答日時:
> ちなみにwindows7の64bitでは動きませんでした。
64ビットではコードが違うのでしょうか。Win7のエディションが何を使われているのかわからないのでなんともいえませんし(HomeとかStarterにはXPモードが無いです)64ビット版を持っていないので無責任な発言かもしれませんが、世間一般ではXPモードで過去のアプリが動けばめっけもん程度の代物とのことです。 動作確認はVirtualPC2007(フリー)とかに古いOS入れて(フリーならOpenDOSとか、ライセンスがあればMS-DOS、PC-DOS、DR-DOS、Win3~XPとか)検証することをお勧めします。
この回答への補足
win7のエディションはプロフェッショナルです。32ビットのvistaでは動きました。win7の64ビットでも動かしたいのですが。
補足日時:2010/11/29 15:59No.7
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) RANK.EQとCOUNTIFSの組み合わせで同ポイントの場合、違う条件を加えて順位を付けたい。 1 2022/08/30 19:49
- ノートパソコン ノートPCでCPUを交換できますか? 6 2022/09/24 17:44
- Windows 10 ストレージセンサーについて 1 2022/06/07 10:32
- その他(コンピューター・テクノロジー) batファイルでPCの設定内容やプロパティーを取得したいのですが、コマンド1個で1ファイルとなるのを 2 2022/04/27 15:27
- MySQL MySQLのテーブル作成で 自信がありません。 2 2022/08/28 05:35
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- Visual Basic(VBA) Wordマクロで指定したフォルダ名に保存する方法について 8 2022/12/13 11:35
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- その他(パソコン・周辺機器) 同じファイル名 上書きしないフリーソフトなどあったら教えて下さい。 仕事で大量の写真などを扱っており 3 2023/05/18 06:43
- 防犯カメラ・監視カメラ・小型カメラ MP4の再生 3 2022/05/03 18:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#のプログラムを読むコツって...
-
API、OCX、DLLって何でしょう?
-
三目並べ
-
CoInitializeSecurityが失敗する
-
JOB名とSTEP名の取得方法を教え...
-
UNIX環境でのCプログラム上でC...
-
i,j,k
-
VisualBasic.NETとVisual C++....
-
ニンテンドーDS用、自作プロ...
-
このプログラミング誰か教えて...
-
ソフトイーサ開発者(登大遊 氏)...
-
c言語の勉強方について
-
OSとCPUの関係について
-
Vix総合画像ビュアーは動作を...
-
どんなプログラムを自作しまし...
-
コンソールアプリでファイル選...
-
現在プログラミングの研修中な...
-
.Net とは何ですか?
-
全豊田作業責任者
-
Excelで用語辞典を作成するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
API、OCX、DLLって何でしょう?
-
VBプログラムをEXCEL VBAに移植...
-
UNIX環境でのCプログラム上でC...
-
このプログラミング誰か教えて...
-
C言語のHP-UXからLinuxへのポ...
-
Ryzen 3700(無印)はWin11に対応...
-
VB.net エラーメッセージを英文...
-
SNMPトラップ情報をC#.netで作...
-
プログラムとは理系ですか文系...
-
現在プログラミングの研修中な...
-
VBS:コンピュータ名を取得し、...
-
C言語でSMTPを使ったプログ...
-
C/C++でチャットソフトを作りた...
-
OSとCPUの関係について
-
DLLってなに?
-
自動で施設の空きを通知するプ...
-
PHP+MySQLで家計簿を作りたい
-
どんなプログラムを自作しまし...
-
コンソールアプリでファイル選...
-
If … then の中の条件式と型に...
おすすめ情報