2016-12-31 5 views
4

私は学習のために単純なBIOSリセットを開発していました。だから私はプリンターのファイルを持っています、それはReseta.comと呼ばれるメニューです。はい、それはスタックのない小さなモデルです。そして、私はA.comを持っています。リセットするコードはどこにありますか?私はメインプログラムReseta.comでA.comを実行する必要があります.A.comはDOSのデバッグで書かれました。はい、私はWindows 98プログラムはMS-DOS上で動作します。私はサービス4Bh、3DHのような割り込み21で試しましたが、私はまだ成功していません。どのようにするのが最も簡単な方法ですか?ちょうど "A.com"ファイルを呼び出すと、割り込み21からサービス0のDOSに戻ります。わかりやすいように、私はWinExec()のようなものを探していました。 WinAPIでは、もちろんアセンブリ16ビットでMS-DOSに。アセンブリの16ビットで別のファイルを実行する方法

PS:私はあなたがこれを自分で行うことができるようになりますように...あなたは音

+2

の可能性のある重複した[RAMに読み込んでプログラムやそれらにNASM 16bとを実行します]( http://stackoverflow.com/questions/10006072/loading-programs-to-ram-and-executing-them-nasm-16b) –

+0

私はNASMを使用していません、私はTASMを使用しています。このリンクの例私にはうまくいきません... :( – user3587527

+2

コードを表示してください – fuz

答えて

2

を、コードをコンパイルするTASMとTLINK /トンを使用していますので、私はちょうどあなたにヒントを与えるでしょう。

.comは、バイトコードにすぎません。ファイルをRAMにロードしてから、そのファイルにジャンプするだけです。コードが4バイト境界で始まることを確認してください。

ソフトリブートで十分であれば、プログラム内でint 19hを呼び出すだけでブートローダにジャンプし、DOSを再ロードすることができます。

(また、ここではRalf Brown's Interrupt Listだこれが本当の古典であることは、いくつかの点で便利になるかもしれませんが注意して:。。。。それは巨大だ)

関連する問題