2017-02-13 7 views
1

申し訳ありませんが、これは基本的な質問ですが、私はどこでも答えをオンラインで見つけることはできません。インクルードまたはDOS割り込みなしでMASMで印刷しますか?

私はアセンブリを学んでいます。開発環境はVS2013 & Windows 7上のMASMです。私は文字列操作についてよく理解しており、今はコンソールにcharを印刷しようとしています。私がインターネット上で見つけることのできる方法は、MASMファイルのインクルード、MessageBoxAの使用、DOS割り込みを使用するプロジェクト設定の変更です。

外部ファイルを含めてプロジェクトの設定を変更することは、間違いなく2つのことです。 MessageBoxAはクールなようですが、純粋なASMでコンソールに印刷する方法はありませんか?ありがとう!

+0

[WriteConsole](https://msdn.microsoft.com/en-us/library/windows/desktop/ms687401(v = vs.85).aspx)どのような問題がありますか? – RbMm

+2

'' MessageBoxA'(またはその問題のための '' WriteConsole')の呼び出しについての*純粋なASM *ではないものは何ですか? – IInspectable

答えて

3

WindowsはDOSではありません。 Windows NTベースのバージョンでは、カーネルドライバなしでハードウェアに直接書き込むことはできません。

ユニコードを気にしない場合は、GetStdHandle(STD_OUTPUT_HANDLE)に電話してstdoutのハンドルを取得し、WriteFileでこのハンドルを使用する必要があります。

GetConsoleModeがtrueを返す場合は、WriteConsoleを使用してUnicode文字列を書き込みます。