2016-04-30 8 views
0

このコードは "Hello、world!" DOSで.COM実行ファイルと:DOSからWindows 10へのアセンブリ

org 100h 
mov dx,msg 
mov ah,9 
int 21h 
mov ah,4Ch 
int 21h 
msg db 'Hello, world!',0Dh,0Ah,'$' 

は、Windows 10上で実行されませんが、64ビットと私は見てきたx86x64用のHelloWorldプログラムのすべての些細な例は、いくつかのライブラリにリンク伴います。

私の質問は、これらのWindowsのそれ以降のバージョンはまだISR IOモデルに従うか、もっと単純にこの例を「ビット高」に変換することですか?

+1

基本的な組み立ての後であれば、おそらくDosboxや別のエミュレータで運が良ければよいでしょう。 – Leeor

+0

DOSは20年近く前に死亡しました。現代版のWindowsでこの種のコードを実行することはできません。したがって、*私はこのプログラムを*どのように変換するのですか?*あなたは*ではありません。今世紀に入ってください。 –

+0

ええと、もう一度やり直してWindows APIを学ばなければならない –

答えて

1

Windows 10だけでなく、保護されたモード(Windows NT 3以降)でアプリケーションを実行するWindowsでは、実際には実行できません。アプリケーションは割り込みとHWに直接アクセスできません。さらに、実行形式自体はOSに依存します。下位互換性はありますが(Win10はWin7アプリケーションを実行できるはずですが)、DOS日までは伸びていません(.COM形式はWin NT 3より前に死んだリアルモードに限定されています)。

このコードをWin10互換に変換する直接的な方法はありません。割り込み/ HWにアクセスするには、OS提供のAPIを使用する必要があります。

+0

私はそれがAPIで覆われていてもまだこれがどこかに現れていると思います。 –

+0

@ChickenWing確かですが、アプリケーションにはアクセスできません。 OSカーネルには、関連するドライバによって実装されたこのロジックがあります(おそらくバスドライバとディスプレイドライバです)。ユーザーアプリケーションには、カーネルによってエクスポートされた、関連するより高いレベルのAPIがあります。 – SomeWittyUsername

+0

それは私が理解しようとしている最終的なものです。私はアセンブリを通してどのように相互作用するのかを調べる必要があると思うが、最初はほとんど何も知りません。 –

関連する問題