チャック。masm32パケットなしの記号名を使用
私は現在、アセンブリ言語のarkaneの技術を学んでいます。
(Windows 8.1の)ダイアログボックスを表示するプログラムを作成しました。 msdn参照をチェックして、ダイアログボックスのオプティクスと動作を変更する方法を見つけました。私は戻り値がどこに格納され、どのようにそれを読むかを学びました。だから私の質問は、「私が立ち往生しているのを助ける」という種類のものではない。この小さなダイアログボックスプログラムで
ルック:
.386
.model flat, stdcall
includelib "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\user32.lib"
includelib "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\kernel32.lib"
MessageBoxA PROTO :DWord, :DWord, :DWord, :DWord
ExitProcess PROTO :DWord
.data
Caption db "Masm shizzle",0
Text db "Click OK my friend",0
.code
start:
push 11h
push OFFSET Caption
push OFFSET Text
push 0
call MessageBoxA
push 0
call ExitProcess
end start
これは魅力のように働いた、と私はパラメータがスタックに発注する必要がある方法を考え出しました。
私は、コードを改善し、より読みやすく、きれい作ってみましたので、私はダウンに.CODEセクションを壊した:
.code
start:
invoke MessageBoxA, 0, addr Text, addr Caption, 11h
invoke ExitProcess, 0
end start
そして私はあなたのコードをさらに読みやすくする可能性が発表されたWebページ上でつまずい"windows.inc"の助けを借りて象徴的な名前を使用してください。 functionA(ANSI)を書く必要がないと言われました。
だから、呼び出しコールは、次のようになります。
invoke Messagebox, NULL, addr Text, addr Caption, MB_ICONINFORMATION
問題は「windows.inc」から、より具体的には、これらのシンボリック名は、MASM32パッケージからであるということです。
私は基本的にmasm32を使用しているわけではありませんが、使用できるVisual Studioがインストールされている "standart" Windowsホストに同等のファイルがあるかどうかを知りたいと思います。
リモートmashineでこのコードを実行(またはコンパイル)したい場合は、ホストにmasm32がインストールされていると仮定することができませんでした。 (私はそれを理解し、または私はそれをプリコンパイルならば、それは実行可能ファイルにパックされて?)
ことがMASM32なしでは不可能であれば、私はシンボリック名のライブラリを記述する必要があると思います....
'windows.inc'ファイルのみ、それが実行されると、コードは、いない組み立てられたときに存在する必要がありますあなたが使用できることをやった後
。また、エンドユーザーがコードを再コンパイルする場合は、MASM32が必要になります。 (または、互換性のあるサードパーティのアセンブラですが、そのようなアセンブラはインクルードファイルの独自のバージョンを提供する必要があります)。したがって、私はあなたに問題があるとは思わない。 –
ありがとうございました。だから、私は必要なはずのすべてのバージョンをプリコンパイルするだけだと思う。完了のために、このファイルに相当するマイクロソフトはありますか? – clockw0rk
実際、私はMASM32がサードパーティのパッケージであることに気づいていませんでした。マイクロソフトと同等のものがあるかどうかはわかりませんが、恐らくそうではありません。ライセンスに応じて、関連するコンテンツをソースコードに直接コピーすることができます。 –