本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
QA  Turbo Assembler

一般的な質問と回答

Turbo Assembler 4.0J の 3.5 との違いは?


A Turbo Assembler 4.0J の 3.5 との違いは?
Q Turbo Assembler 4.0J と 3.5 との違いは以下のとおりです。
  • Pentium のサポート
  • エリアスレコードのサポート
  • 32 ビットアセンブル(TASM32)のサポート

DOS や Windows 3.1 の 16 ビットアプリケーションに限定すれば,TASM 4.0J と3.5 はほとんど同じものです。

また,Turbo Assembler 4.0J と Turbo Assembler 4.0J/Release2 との違いは以下のとおりです。

  • Windows 95 上の DOS コマンドラインでの使用が可能。
  • Delphi 1.0 で作成したプログラムのデバッグをサポートした Turbo Debugger が付属。

Borland C++ で バージョンの古い TASM を使用できますか?


A TASM3.5 は BC4.x, TC4.0 で使用できますか?
Q 公式には,Borland C++ 4.0J で動作確認の対象としているのはTurbo Assembler 4.0J です。しかし,BC&AFX 3.1 に付属しているTASM 3.5 は,ほとんど TASM 4.0J と同じものなので,Borland C++ 4.0J でも利用できるでしょう。
CD-ROM に含まれるランタイムライブラリソースコードを再構築する場合にもアセンブラが必要ですが,16ビット版のライブラリに限ればTASM 3.5 でも使えるでしょう。ただし,32 ビットターゲットをアセンブルする場合は,TASM 4.0J に含まれる 32 ビットアセンブラが必要になります。

新しいバージョンのコンパイラでフルイオブジェクトをリンクする事は基本的に問題無いでしょう。ただし,デバッグ情報がアップデートされているので,リンクする際には新しいバージョンのリンカを使用しなければなりません。これは TASM4 を BC5 で使用する場合にも当てはまることです。

Turbo Assembler は,どんなときに必要になりますか?


A Turbo Assembler 4.0J, 4.0J/Relese2, 5.0J は,どんなときに必要になりますか?
Q 製品には 16 ビットと 32 ビットに対応したアセンブラが用意されています。 アセンブリ言語のみで作られたプログラムや,C や C++ のプロジェクトにアセンブリソース(.ASM)を含む場合に必要になります。 BC4.x, TC4.0 や Delphi には,組み込みアセンブラ(インラインアセンブラ)機能がありますので,C/C++ , ObjectPascal のプログラム中にアセンブリコードを使う程度であれば,Turbo Assembler は必要ありません。 CD-ROM に含まれているランタイムライブラリソースコードや別売のTurbo Vision for BC++ 4.0J を完全に再構築するためには,Turbo Assembler が必要です。 また,Turbo Assembler 4.0J /Release 2 には,Delphi で作成した .EXE ファイルをデバッグするためのデバッガが付属しています。

Delphi 2.0J で作成されたプログラムをアセンブラレベルでデバッグする場合には Turbo Assembler 5.0J に含まれる Turbo Debugger が必要になります。

Turbo Assembler は、Borland C++ がなくても使えますか


A Turbo Assembler は,Borland C++ がなくても使えますか?
Q Turbo Assembler は,Borland C++ 以外の言語製品と組み合わせて使うことができます。Turbo Assembler は,アセンブラのみでもアプリケーション開発ができるよう,Turbo Debugger 4.0 やリソースコンパイラが付属しています。しかし,ヘルプコンパイラやResource Workshop は付属していません。また,デバッグ情報の形式が Borland C++ 3.1 以前のものと異なるため,Borland C++ 3.1 以前の処理系でコンパイル/リンクされた実行ファイルをTurbo Debugger 4.0 でデバッグすることはできません。この場合は,Turbo Assembler 4.0 に入っている新しい Turbo Linker を使って,リンクし直さなければなりません。

Turbo Assembler 4.0J は,Borland C++ 4.x がなくても使えますか?


A Turbo Assembler 4.0J, Turbo Assembler 4.0J/Relese2 は,製品単体で使用できますか?
Q できます。 Turbo Assembler 4.0J, Turbo Assembler4.0J/Relese2 は,アセンブラのみでもアプリケーション開発ができるよう,Turbo Debugger 4.0 やリソースコンパイラが付属しています。 もちろん,BC4.x, TC4.0 や Delphi などの言語製品と組み合わせて使うこともできます。 しかし,ヘルプコンパイラや Resource Workshop は付属していません。 また,デバッグ情報の形式が Borland C++ 3.1 以前のものと異なるため,Borland C++ 3.1 以前の処理系でコンパイル/リンクされた実行ファイルを Turbo Debugger 4.0 でデバッグすることはできません。 この場合は,Turbo Assembler 4.0 に入っている新しい Turbo Linker を使って,リンクし直さなければなりません。

TASM のアセンブルモードの使い分けは?


A 既存のアセンブラプログラムに対して,TASM のアセンブルモードをどのように使い分ければよいでしょうか?
Q
モード 使用する条件
デフォルト(MASM) ASM 4.00 または MASM 5.00 でアセンブルされる プログラム
Quirks MASM 4.00 または MASM 5.00 でアセンブルされるプログラムで,TASM では MASM51 または QUIRKS を指定しないとアセンブルできない場合
Masm51 MASM 5.1 を必要とするプログラム
Masm51 および Quirks MASM 5.1 を必要とするプログラムで,TASM では MASM51 のスイッチセットだけではアセンブルできない場合

--------------------------------------------------- TSM_HELP.TXT -----

MASM 5.1 用アセンブラには,必ず MASM51 を指定が必要か?


A MASM 5.1 用に書かれたアセンブラプログラムには,必ず MASM51 を指定しないといけないのでしょうか?
Q たいていのプログラムは MASM51 疑似命令を使わなくてもアセンブルできますが,MASM 5.1 特有の機能を利用している場合には MASM51 モードを使う必要があります。次の項では,MASM51 および QUIRKS モードの組み合わせで MASM 5.1 のどの機能がエミュレートされるかを示しています。
--------------------------------------------------------- TSM_HELP.TXT -----

QUIRKS モードと MASM51 モードで制御できる事項は?


A QUIRKS モードと MASM51 モードで制御できるのはどんな事項でしょうか?
Q 次の表は,QUIRKS および MASM51 モードのいろいろな組み合わせでどんなことが行われるかの一覧になっています。

モード   機 能
Quirks
  • CS が変わらないとみなせる場合には,FAR ジャンプをNEAR または SHORT として生成することを可能にする。
  • すべての命令サイズは,(もしあれば) 1つのレジスタだけで実行される2進演算によって決定されるようにする。
  • = 定義,または数値の EQU 定義における OFFSET やセグメントオーバーライドなどの情報を破壊する。
  • "PTR" や ":" をテキストとして含む式の EQU 定義を強行する。
Masm51
  • Instr,Catstr,Substr,Sizestr,および "\" による行 継続をすべて使用可能にする。
  • キーワードに対する EQU 定義は,エリアスではなくテキ ストになる。
  • マクロ引数内の %textmacro 上では先頭の空白文字は 破棄されない。
Masm51 および Quirks
  • 上記の QUIRKS の項で示したすべて。
  • 上記の MASM51 の項で示したすべて。
  • @@,@F,および @B ローカルラベルが使用可能になる。
  • MODEL 疑似命令の拡張モデルでは,プロシージャ名は自動的に PUBLIC になる。
  • PROC 内の NEAR ラベルは,他のプロシージャ内で再定義できる。
  • 現在のプロシージャの外から到達可能なシンボルを定義できる "::" 演算子が使用可能になる。
Masm51 および Ideal
  • Ideal モードの構文と,MASM 5.1 のテキストマクロ疑似命令 (Instr,Catstr,Substr,Sizestr) がサポートされる。

---------------------------------------------- TSM_HELP.TXT -------

DOSSEG や .STACK 疑似命令は,どんな場合につかうのでしょうか?


A DOSSEG または .STACK 疑似命令は,どんな場合につかうのでしょうか?
Q Borland C++ や Turbo Pascal などの高級言語とリンクする Turbo Assember モジュールを開発する場合は,これらの言語のコンパイラがセグメント順序とスタックのセットアップを行うので,DOSSEG または .STACK 疑似命令を使う必要はありません。
この2つの疑似命令で定義されるセグメント名は,高級言語が使用するセグメント名と重複してしまうことがあります。 ただし,単独のアセンブラプログラムを開発する場合は,そのうちのモジュールの1つでセグメント名を定義する必要があります。
DOSSEG は,Microsoft 形式のセグメント順序を使う場合にのみ必要になります。
目的のセグメント順序で TLINK がセグメントを処理できるように設定すれば,プログラマ独自のセグメント順序を定義できます。 TLINK がセグメントをどのように処理するかについては,ドキュメントファイル TLINK.TXT を参照してください。
--------------------------------------------------------- TSM_HELP.TXT -----

MSC に含まれているファイルをアセンブルする場合のオプションの指定は?


A Microsoft C のパッケージに含まれているファイルを Turbo Assembler でアセンブルする場合,どんなオプションを指定すればよいでしょうか?
Q そのようなアセンブラモジュールの場合は,たとえば次のように MASM51 と QUIRKS を使うようにします。

tasm /jmasm51 /jquirks filename
--------------------------------------------------------- TSM_HELP.TXT -----

COM ファイルはどのようにして作成するのでしょうか?


A .COM ファイルはどのようにして作成するのでしょうか?
Q ソースファイルをタイニーモデル (.MODEL TINY) でアセンブルし,次に示すようにコードセグメントの開始直後に ORG 100h を記述します。

.MODEL TINY .CODE ORG 100h start: .... ; プログラムの本体 END start ; start のエントリポイントを定義

.COM にするプログラムには .STACK を入れてはいけません。

TLINK では,次のように /t オプションを指定すると .EXE ではなく .COM ファイルが作成されます。 次のコマンドラインでは,

tlink /t SHOW87

SHOW87.EXE ではなく SHOW87.COM が作成されます。

.EXE ファイルを .COM に変換するには,一定の制約条件があります。この制約条件については,MS-DOS のマニュアルの EXE2BIN に関する説明を参照してください。
--------------------------------------------------------- TSM_HELP.TXT -----

複数のソースファイルをアセンブルする方法は?


A Turbo Assembler で複数のソースファイルをアセンブルする方法は?
Q ワイルドカード (*, ?) を使うか,ソースファイル名をプラス記号で区切って指定します。 たとえば次のコマンドラインでは,

tasm filt + o*

FILT.ASM と,'o' で始まるすべての .ASM がアセンブルされます。
--------------------------------------------------------- TSM_HELP.TXT -----

複数のソースファイルを別々のオプションでアセンブルする には?


A 複数のソースファイルを別々のコマンドラインオプションでアセンブルする にはどうすればよいでしょうか?
Q Turbo Assembler では,セミコロン (;) を区切り記号として使うと,1 つの DOS コマンドラインで複数のアセンブラコマンドラインを指定できます。 たとえば次のようにすると,

tasm /zi filt; o*

FILT.ASM はデバッグ情報付きでアセンブルされ,'o' で始まる .ASM ファイルはデバッグ情報なしでアセンブルされます。
--------------------------------------------------------- TSM_HELP.TXT -----

MASM のように環境変数を定義して,毎回入力する手間を省けますか?


A マイクロソフトの Macro Assembler では,環境変数を定義しておけば,同じコマンドラインを毎回入力する手間を省けますが,Turbo Assembler でも同様でしょうか?
Q 環境変数は使えませんが,より柔軟な方法でそうした手間が省けるようにしています。 Turbo Assembler は,起動時に必ず TASM.CFG というコンフィグレーションファイルを,最初にカレントディレクトリ,次に起動された TASM.EXE が入っているディレクトリから探します。 Turbo Assembler は先に TASM.CFG を処理してから,コマンドラインを処理します。 したがって,TASM.CFG 内に指定されているコマンドラインオプションより,コマンドラインに指定されたものが優先されることになります。 たとえば,常に次のコマンドラインを使っているとすると,

/t /ml /zi /jJUMPS /jLOCALS

TASM.CFG ファイルに次のように書いておけばよいわけです。

/t
/ml
/zi
/jJUMPS
/jLOCALS

こうしておくと,Turbo Assembler を起動したときに上記のオプションがデフォルト として使われます。 TASM.CFG はカレントディレクトリから (そこにプロジェクトご とに TASM.CFG を作っておくことができます。1 つのディレクトリに複数のプロジェ クトのファイルが入っている場合は,間接コマンドファイルという形で,TASM.CFG と同様なコンフィグレーションファイルを別々に用意することができます。
--------------------------------------------------------- TSM_HELP.TXT -----

間接コマンドファイルとはどんなものですか?


A 間接コマンドファイルとはどんなものですか?
Q 間接コマンドファイルは,Turbo Assembler のコマンドラインの一部または全部が書かれたファイルで,Turbo Assembler を起動するコマンドラインでは,そのファイル名の前に単価記号 (@) を付けて読み込みます。 たとえば,以下のような内容のFILE.CMD という間接コマンドファイルがあると,

/t
/ml
/zi
/jJUMPS
/jLOCALS
file1 +
file2 +
file3 +
file4

次のコマンドラインを実行すれば,

tasm @FILE.CMD

次と同じ指定をしたことになります。

tasm /t /ml /zi /jJUMPS /jLOCALS file1+file2+file3+file4

単価記号 (@) 自体は間接コマンドファイルの名前の一部ではないので注意してください。 また,ファイル名の先頭に単価記号が付いたファイルがあると,(実際にはソースコードファイルであっても) 間接コマンドファイルとして扱われてしまいます。
--------------------------------------------------------- TSM_HELP.TXT -----

オプションの指定にスラッシュではなく円記号を使えますか?


A コマンドラインオプションの指定に,スラッシュではなく円記号 (\) を使うことができますか?
Q できません。 円記号を使うと,Turbo Assembler (および MASM) では,それがデフォルトドライブのルートディレクトリにあるファイルとして認識されます。 Turbo Assembler (および MASM) は,どちらもスペース文字 ( ) をカンマとして扱うので,円記号を使うことによってファイルが失われることもあります。 たとえば次のようなコマンドラインを実行してしまうと,

tasm \zi prid&joy.asm

Turbo Assembler (および MASM) はこれを,ルートディレクトリの ZI.ASM をアセンブルし,その結果をカレントディレクトリのファイル PRID&JOY.ASM に出力する指示であると認識します (オブジェクトファイルのデフォルト拡張子は .OBJ ですが,.ASM が明示的に指定されているので,アセンブラは .ASM を使うことになります)。
PRID&JOY.ASM ファイルは,\ZI.ASM をアセンブルした結果のオブジェクトファイルの内容で上書きされるか,\ZI.ASM が見つからなかった場合は削除されます。 いずれの場合でも,PRID&JOY.ASM の元の内容は失われてしまいます。
--------------------------------------------------------- TSM_HELP.TXT -----

Language Q&A に戻る | Q&A ホームページへ戻る

Trademarks & Copyright (C) 1998 INPRISE Corporation. Last modified on 8-June-1998.

inserted by FC2 system