問題タブ [masm32]

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.

0 投票する
1 に答える
713 参照

assembly - LNK4086警告およびVS2008asmビルドでのdllエントリポイントの欠落

VS2008で次の.asmファイルをコンパイルしようとしました(この単一の.asmファイルを追加した空のWin32 dllプロジェクトの一部として):

コードは元々ここに投稿されました。

ビルドすると、警告が表示されます。

警告LNK4086:エントリポイント'_start'は、12バイトの引数を持つ__stdcallではありません。画像が実行されない可能性があります

ただし、.dllは生成されます。

そのdllを使用しようとすると、「dllでエントリポイントCPUIDIsSupportedが見つかりません」という例外が発生します。

しかし今ここにキッカーがあります:

MASM32でまったく同じasmファイルをコンパイルした場合でも、LNK4086を取得できますが、dllを適切に呼び出すことができます。

VS2008ソリューションにasmファイルを含めて、MASM32を使用する代わりに、そこからビルドしたいと思います。したがって、動作するdllを取得するために、ビルドプロセスについて何を変更する必要があるかを知りたいと思います。また、VS2008内から64ビットバージョンのdllを作成する方法についても興味があります。

0 投票する
5 に答える
1025 参照

assembly - MOV [EBX]、AX-レジスタへのポインタ?

MOV [1234H], AXAXの値がメモリ内の1234の16進アドレスにコピーされることを意味します。だから、私が言っていることが間違っているなら、私を訂正してください、[]演算子はポインタとして機能しますよね?

そうは言っても、次の指示が理解できません。MOV [EBX], AXなぜ[]を使用するのですか?EBXはプロセッサ内の汎用レジスタであり、メモリセルではないため、EBXへのポインタはありません。

PS私はmasm32でプログラミングしています。

ありがとう

0 投票する
2 に答える
187 参照

assembly - MASM32 「デフォルトのコード距離」とは何ですか?

MASM32 で使用されるこの記号:

@CodeSizeデフォルトのコード距離を表す整数を返します。

「デフォルトのコード距離」の意味を理解しようとしていますか?

トニー

0 投票する
1 に答える
219 参照

winapi - masm32の64ビット番号のwinapi

論理ボリュームのサイズを決定して印刷する必要があります。GetDiskFreeSpaceExは、サイズを64ビットの数値(?)として返します。私はそれで何ができますか?

0 投票する
1 に答える
26159 参照

assembly - アセンブリ内の複数行コメント

アセンブリ内の複数の行にコメントを付ける方法はありますか?

Masm32v9を使用しています。

ありがとう。

0 投票する
3 に答える
772 参照

assembly - Intel x86 コプロセッサーのアセンブリに関する質問

Intel の x86 コプロセッサを使用して行われた計算の結果を取得する方法を理解するのに苦労しています。

次のデータ セグメントを検討してください。

および次のコード セグメント、バージョン 1 :

およびバージョン 2 :

バージョン 1は問題なく理解できました。

わからないバージョン2です。デバッガーで、バージョン 1 とまったく同じ計算が行われていることがわかりますが、保存するときは "41066666" のようになります!?

これの理由は何ですか?
8.4 を「41066666」にするために使用された「エンコーディング」は何ですか?
コンソールに出力できるように (たとえば、StdOut masm32 ライブラリ関数を使用して) 8.4 に戻す方法はありますか?

ありがとう。

0 投票する
2 に答える
1791 参照

assembly - MASM32 に構文を含める

ファイルを MASM32 に含める場合、それ自体のファイルを見つけることができません。masm32rt.inc をインクルードした後、アセンブラーは \masm32\include\windows.inc を見つけることができません

どうやらほとんどの MASM システム インクルード ファイルは、相対パスまたは絶対パスを指定する代わりに \ で始まります。

%PATH% でディレクトリを指定し、/I コンパイル スイッチを設定し、INCLUDE および MASM32 環境変数を設定しようとしましたが、成功しませんでした。

Windowsに理解できないパスを与えているようです。解決策は、ファイル内で大量の検索と置換を行い、ディレクティブの前に C: を追加することです。ただし、提供されたファイルを編集しないようにして、適切な方法を見つけたいと思います。

独自のファイルを見つけることができるように設定するにはどうすればよいですか?

0 投票する
1 に答える
383 参照

assembly - BIOS でのグラフィックの表示

MASM32 を使用すると、実行可能ファイルに埋め込まれたバイナリ ファイルに格納されているビットマップをコンソールに表示できますか?

誰でも方法を教えてもらえますか?

補遺: ここでは本格的な GUI について話しているわけではありません。文字のビットマップを画面に表示する機能だけです。それらは、実行可能ファイルにリンクするファイルに 8x8 のバイナリ イメージとして保存されます。

0 投票する
2 に答える
45329 参照

assembly - アセンブリ-.data、.code、およびレジスタ...?

それで今朝、私は組み立てについて混乱した質問を投稿しました、そして私はいくつかの素晴らしい本物の助けを受け取りました、それは本当に感謝しています。

そして今、私は組み立てを始め、それがどのように機能するかを理解し始めています。

私が理解していると思うことには、スタック、割り込み、バイナリ/ 16進数、そして一般的にほとんどの基本的な操作(jmp、push、movなど)が含まれます。

私が理解するのに苦労していて助けを求めている概念は以下のとおりです-あなたが以下のいずれかに取り組むことができればそれは大きな助けになるでしょう:

  1. .dataセクションで正確に何が起こっていますか?これらの変数は宣言していますか?
  2. もしそうなら、後でコードセクションで変数を宣言できますか?そうでない場合は、なぜですか?もしそうなら、どのように、そしてなぜデータセクションを使用するのですか?
  3. レジスターとは何ですか?変数と比較してどうですか?つまり、それが小さな情報を格納する場所であることを知っています...しかし、それは私には変数のように聞こえます。
  4. 配列を作成するにはどうすればよいですか?私はこれが一種のランダムに見えることを知っていますが、私はこのようなことをどのように行うのか興味があります。
  5. 各レジスターの用途に関する一般的な慣行のリストはどこかにありますか?私はまだ完全には理解していませんが、たとえば、プロシージャからの「戻り値」を格納するために特定のレジスタを使用する必要があると言う人がいます-そのようなプラクティスの包括的または少なくとも有益なリストはありますか?
  6. 私がアセンブリを学んでいる理由の1つは、高水準コードの背後で何が起こっているのかをよりよく理解することです。そのことを念頭に置いて、C ++でプログラミングしているときは、スタックとヒープについてよく考えます。アセンブリでは、スタックが何であるかを知っています-「ヒープ」はどこにありますか?

いくつかの情報:私はIDEとしてWinAsmでmasm32を使用しており、Windows7で作業しています。c++/javaなどの高級言語でのプログラミングの経験が豊富です。


編集:いつものように非常に有益な、みんなの助けに感謝します!素晴らしいもの!最後にもう1つ、スタックポインタとベースポインタ、またはESPとEBPの違いは何でしょうか。誰かが私を助けることができますか?

編集:私は今それを手に入れていると思います...ESPは常にスタックの一番上を指します。ただし、EBPは好きな場所に向けることができます。ESPは自動的に処理されますが、EBPを使用して好きなことを行うことができます。例えば:

このシナリオでは、EBPは4を保持しているアドレスを指しますが、ESPは2を保持しているアドレスを指します。

実際のアプリケーションでは、6、5、および4が関数の引数である可能性がありますが、3および2はその関数内のローカル変数である可能性があります。

0 投票する
3 に答える
3196 参照

assembly - MASM/MASM64 からコンパイル時にアーキテクチャを検出する

ターゲット アーキテクチャが I386 または AMD64 であるかどうかを ASM ソース ファイルからコンパイル時に検出するにはどうすればよいですか?

masm(ml.exe)/masm64(ml64.exe) を使用して file32.asm と file64.asm をアセンブルしています。アーキテクチャに応じて、file32.asm または file64.asm のいずれかを含む単一のファイル file.asm を作成すると便利です。理想的には、次のようなものを書きたいと思います。

また、必要に応じて、ml.exe と ml64.exe を別のコマンド ライン オプションで実行できます。

ありがとう!