プロが教えるわが家の防犯対策術!

9821のMSDOS6.2の基本セットと拡張セットを持っています。昔の教本を読みながらMASMを使って9821でプログラミングをしたいと思っています。

しかしこの環境でつかえるMASMは現在販売されていないようで、オークションなどでも見つけることができませんでした。

よく過去の質問に8086で動くMSDOSアプリケーションとして互換性のあるフリーのマクロアセンブラを使えるというアドバイスが出てきますが、
DOS/VとPC98では構造が異なるので実際のところどうなのか気になります。
もしそれらを使用した場合、MSDOSのシステムコールを使わず機種に依存した命令もアセンブルやアンアセンブルはできるのでしょうか?
特にフロッピーディスクまわりの命令を自在に操れるようになれればと思うのですが。

初心者なのでちんぷんかんぷんなことをお尋ねしていると思われるかもしれませんがよろしくお願いします。

A 回答 (3件)

アセンブリ言語は、(MASMもそうですが)機種依存ではなくて、CPU依存です。



ですから、i8086(せいぜいi80386くらいまで)の命令は、全てサポートしています。
システムコールは、MS-DOSであれば、おそらくAT互換機でもPC-9821でも同じだと思います。

しかし、G-RAMのアドレスやBIOS関連(AT互換機はBIOSコールを使える。PC-9801は別のコールがあった気がする。)、グラフィック命令関連は、機種依存(アドレスやサービスコールが異なる)があるのでその機種にあわせたコールをする必要があります。
コールそのものは、ニーモニックとして存在しています。
    • good
    • 0
この回答へのお礼

皆様、アドバイスありがとうございました。
 多角的な意見をいただきたいと思ってずっと放置していた本質問を締め切ります。
 今は6年前と環境が激変し愛器に電源を入れる時間もほとんどなくなってしまいました。
 
 御礼が遅くなり、申し訳ございません。

お礼日時:2012/08/30 08:46

MASMというのは、intelのASM86アセンブラのMicrosoft製の互換品で、厳密にはサードパーティーの商品になります。



バイナリに関しては、MS-DOS(PC-DOS)汎用であれば違いはありません。低レベルなグラフィックやディスクアクセスをしなければ、気にする必要はないものです。
機種固有の部分は、特定の割り込み命令(PC98x1ならint1B)を使い、これについては、書籍などを参考にしてください(98だとASCIIから出ていたPC-9801プログラマーズリファレンスや秀和の本、どちらも絶版。ATだと、ソフトバンクからで出てたかな)。
98だと、プロテクトがらみでμPD765Aを制御したり、ATでもコントローラ(日立だったかな)をいじる方法もありますが、まあ、よほどの熟練者(モニタやデバッガだけでプログラムできるレベル)でないと無理でしょう。
多分、ここを見ている方でも、出来る方は一桁くらいかと思います。

MASM互換のアセンブラはネットを探せばあります、リンカやデバッガもあり、98でも動きますよ。
    • good
    • 0
この回答へのお礼

皆様、アドバイスありがとうございました。
 多角的な意見をいただきたいと思ってずっと放置していた本質問を締め切ります。
 今は6年前と環境が激変し愛器に電源を入れる時間もほとんどなくなってしまいました。
 
 御礼が遅くなり、申し訳ございません。

お礼日時:2012/08/30 08:46

8086のプログラムとして書く限り、機種に依存した機械語の命令(ニーモニック)というのは無いはずです。

が、使用するアセンブラによって、マクロ機能やセグメントの指定の仕方等に多少の差はあると思います。
また、MS-DOSのシステムコールを使わずにFDを読み書きするなら、BIOSを使うことになりますが、BIOSや読み書きしたいFDのフォーマット(ファイルの管理方法やセクタ長とか)等の資料も必要になりますね。
BIOSもイヤで気力と技術があればFDCを直接制御することもできますが、DMAとか割り込みも制御しないといけなかったはずなので、ものすごく大変です…I/Oの割付はPC/ATとPC98では全く違うので、PC98の資料を集める必要があります。(昔は解析本など、沢山出ていたんですが)
    • good
    • 0
この回答へのお礼

皆様、アドバイスありがとうございました。
 多角的な意見をいただきたいと思ってずっと放置していた本質問を締め切ります。
 今は6年前と環境が激変し愛器に電源を入れる時間もほとんどなくなってしまいました。
 
 御礼が遅くなり、申し訳ございません。

お礼日時:2012/08/30 08:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!