問題タブ [fasm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
string - FASM-シンプル:lstrcpy&lstrcat-結果の文字列が正しくありません
私はFASMで簡単なタスクを実行しようとしていますが、これは文字通り約2時間苦労しています。
目標と問題についてコードにコメントしましたが、説明します。
特定のファイルへのパスを変数に保存しようとしています。ファイルはTempDirectoryにあります。したがって、最初に一時パスを取得してから、ファイル名を一時パスの最後に追加する必要があります。
私はこれを2回続けて行おうとしています。しかし、何らかの理由で、結果として得られる文字列は「ねじれた」ものになってしまいます。
私の現在のコードは次のとおりです。
これを解決するための助けをいただければ幸いです。ありがとう!
winapi - FASM-ファイルが存在する場合-GetFileAttributesの使用-INVALID_FILE_ATTRIBUTES値?
GetFileAttributesAを使用して、FASMにファイルが存在するかどうかを判断しています。ファイルが存在しない場合、戻り値はINVALID_FILE_ATTRIBUTESになることは知っていますが、この値を確認する方法がわかりません。
私のコード:
コンパイラがINVALID_FILE_ATTRIBUTESを値として認識しないため、次のようになります。
動作しないでしょう。
誰かがこの定数の値を知っているので、手動で入力するだけです。
どんな助けでも大歓迎です。ありがとう
JensBjörnhagerからの応答の後、以下は興味のある他の人のための作業コードです。
あるいは:
もう一度ありがとうJensBjörnhager!
if-statement - FASM-x64とx86
Windows Vista x86を使用しながら、FASMで簡単なアプリケーションを作成しました。アプリケーションはコンパイルされ、エラーなしで正常に実行されました。
次に、まったく同じソースコード(文字通り同じファイル)を、WindowsVistax64を実行している他のPCに移動しました。ソースコードをコンパイルすると、エラーが発生しました。
x86の場合、次のように簡単に始めることができます。
x64でコンパイルするときは、次のようなものを使用する必要がありました。
もう1つの問題(私の主な関心事)は、x86でいつ使用できるかということです。
しかし、x64で同じコードをコンパイルしていると、次の行が強調表示された「IllegalInstruction」が表示されます。
x64でこれを行う別の方法はありますか?
また、両方で互換性がある場所にコーディングするにはどうすればよいですか?x86でコンパイルすると、結果の出力はx64で正常に実行されると思いますか?
最後に、これはアーキテクチャ以外の何かと関係がある可能性がありますか?
api - FASM-HKCUのスタートアップに追加
「SOFTWARE\Microsoft \ Windows \ CurrentVersion \ Run」にエントリを追加して、FASMアプリケーションをシステムの起動に追加しようとしています。
次のAPIを使用しています。
RegOpenKeyExA
RegSetValueExA
RegCloseKey
advapi32.dllで
コードを実行すると、エントリが作成されることはありません。これが私のコードです:
自分のエントリがレジストリに追加されない理由がわかりません。この問題に関する助けをいただければ幸いです。
OllyDbgを使用して、これを考え出しました。
アクセス拒否エラーが発生する理由がわかりません。RegOpenKeyExAはERROR_SUCCESSを返します
スタートアップに自分自身を追加していたことが判明しましたが、RegEditでは表示できず、MSConfig..weird ..?でのみ表示されます。
64-bit - FASM-IsWow64Process-ブール結果のチェック
アプリを実行しているPCがx64かx86かを判断しようとしています。
これが私の現在のコードです:
実行時にクラッシュするだけです。
ブール値をチェックする適切な方法は何ですか、その部分を正しく実行していますか?
この問題の解決にご協力いただきありがとうございます。
assembly - 環境変数 - 起動フォルダー
スタートアップ フォルダーの環境変数はありますか。
XP では C:\Documents and Settings(user)\Start Menu\Programs\Startup の下にあり、Vista 7 では Appdata\Microsoft\Windows\Start Menu\Programs\Startup\ の下にあります。
このフォルダに EnVar があるかどうか疑問に思っていましたか?
delphi - FASM-DelphiDLLに文字列を渡す
私は次のコードでDelphiXE2でコード化されたdllを持っています:
今、私はこの関数を次のようなFASMアプリケーションにインポートしています。
そして利用はそうです:
ただし、結果のメッセージボックスは、次のように歪んだ文字で表示されます。
これは、関数呼び出しの正確な結果です。
この問題を解決するにはどうすればよいですか?
assembly - コンパイルにFASMコンソールを使用する方法
ユーザーがコードを入力してNASM、FASM、YASMなどでコンパイルできるアセンブリIDEを作成しようとしていますが、FASMにはIDEが付属しているため、コンソールでのコンパイルに関する情報が見つかりません。たとえば、プログラムtest.asmがある場合、次のようにコンパイルしますか?
もしそうなら、fasm.exeはコマンドプロンプトが動作していたのと同じディレクトリにある必要があります。助けてくれてありがとう。
windows - アセンブリから Windows API を呼び出していますが、ハードコードされたアドレスはありません
Windows XP 環境で fasm を学習しているときに fasm のソース コードを読んでいると、invoke マクロが見つかりました。
そしてインポートマクロ。
しかし、MessageBoxA のハードコーディングされたアドレスも、アセンブリ コードでの user32.dll の読み込みも見つかりませんでした。アドレスではなく文字列にラベルを付けるマクロ定義のみがあります。
私の仮定はこれです
user32.dll をロードし、ロードされた dll の開始アドレスを返すコードがあります => ここで、返されたアドレスをロケーション A に呼び出しましょう
ハードコーディングされたアドレスとラベルのペアがあります (例: MessageBoxA = 0x00000000)
したがって、命令「call」は MessageBoxA ラベルを呼び出すことができます (位置 A + MessageBoxA オフセットに変換されます)。
私の仮定は間違っていますか?API はどのように呼び出されるのだろうか。
ありがとう
winapi - FASM で GdiGradientFill に問題がある
Win32 ASM のプロジェクトとして、最近開発した Java アプリの ASM バージョンを作成しようとしていますが、タイトルが示すように、GdiGradientFill に問題があります。現時点では、FASM を使用し、INVOKE や WIN32 インクルードの使用などの高レベルの ASM 構造を避けることをお勧めします。
私が持っているもの、atm:
ただし、コードは FALSE のみを返し、両方の MSDN を通過した後 ( http://msdn.microsoft.com/en-us/library/windows/desktop/dd373585(v=vs.85).aspx )
および他のいくつかの例 (http://www.asmcommunity.net/board/index.php?topic=4100.0) を参照してください。
Msimg32 の GradientFill を使用しようとしたときに別の問題がありました。これは常にクラッシュにつながるためです。これは正確ですか、それともこのフォームで問題を経験した人はいますか?
コード全体の Pastebin リンク: http://pastebin.com/GEHDw6Qe
助けてくれてありがとう、SS
編集: コードは現在機能しています。正直なところ、何が変わったのかわかりません。PUSH / POP シーケンスを MOV EAX に変更する以外に、以前と現在の作業データの間に違いはありません。[rectClient.left]、 ect (PUSH / POP メソッドも機能します) - 支援を提供してくれた人々に感謝します!