問題タブ [masm]

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 投票する
5 に答える
1325 参照

assembly - アセンブリ言語プログラムが「ジャンク」を表示する原因は何ですか?

短いメッセージを表示するはずのコードがあります。関連するコードは次のとおりです。

出力は次のとおりです。

ここで何が起こっているのですか?

0 投票する
6 に答える
9621 参照

visual-studio - Visual Studio 2008を使用して、MASM 6.11アセンブリコードをアセンブル、リンク、デバッグ、および実行する

これらすべてのビルドプロセスがMASM6.11で提供されるツールによって実行されているかのように、コードを効果的にコンパイル/リンク/ビルドなどしながら、VisualStudio2008を可能な限り使用したいと思います。MASMの正確なバージョンは、6.xの範囲内にある限り、重要ではありません。これは、私の大学が16ビットアセンブリを教えるために使用しているものです。

私はこのテーマについていくつかの調査を行い、いくつかの選択肢があるという結論に達しました。

  1. MASM 6.11がネイティブに行うのと同じフラグなどを使用して、MASM6.11実行可能ファイルを呼び出すようにVSを再構成します。
  2. VSによって呼び出される中間バッチファイルを作成してから、MASMのリンカなどの適切なコマンドを呼び出します。
  3. VSの組み込みビルドツール/ルール(アセンブラー、リンカーなど)を再構成して、MASM6.11で使用される環境と同じ環境を提供します。

オプション(2)は、VSの「外部ツール」インターフェイスで使用できるオプションではMASMのビルドツールを正しく呼び出すには不十分である可能性があることに気付いたときに作成されました。したがって、VSの厳密な引数の受け渡し方法を解釈するバッチファイルが役立つ場合があります。これを機能させる方法についての私の学習では、コマンドプロンプトからML.exe、LINK.exeなどを手動で呼び出す必要がありました。

以下は私の質問に答えるのに役立つかもしれないいくつかのリンクです。私はそれらをすべて読んだことを覚えておいてください、そしてどれも実際の解決策ではありません。私がMASM6.11を指定しても、おそらくもっと一般的な答えを提供することを妨げないことを願っています。

オプション(2)で使用されたのと同様の方法ですが、スレッドのユーザーには連絡できません:http:
//www.codeguru.com/forum/archive/index.php/t-284051.html
(また、私は中間バッチファイルの必要性)

私の質問に対する古い説明:
http ://www.cs.fiu.edu/~downeyt/cop3402/masmaul.html

おそらく私が決定的な解決策に到達した最も近いものですが、MASM以外のツールのスイートを指し、バッチファイルも使用します:
http ://www.kipirvine.com/asm/gettingStarted/index.htm#16 -少し

コードの各ステップで使用されるツールの用語がオフになっている場合はお詫びします->exeプロセスですが、コードの記述が完了してから実行可能ファイルを生成するまでのステップ全体を再現しようとしているため、実行しませんそれはとても重要だと思います。

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

assembly - Why can't I change the value of a segment register? (MASM)

I decided to teach myself assembly language.

セグメント レジスタの値を変更しようとすると、プログラムがコンパイルされないことに気付きました。

私が見つけたすべての記事は、実際に少なくとも 4 つのセグメント レジスタの値を変更できると述べています。

この時点で本当に興味があるのはその理由だけです。これらのアドレスを変更する本当の目的はありません。

0 投票する
7 に答える
17801 参照

linux - LinuxでのMASM?

LinuxでMASMを使用する方法はありますか?タフなNASMはLinuxで非常に人気がありますが、コードの命令スタイルによっては異なります。

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

runtime - zlib + マス

msvcrt.dll などのすべての C ランタイム ライブラリがなくても、zlib を masm で使用できますか? もしそうなら、方法を教えてもらえますか?

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

performance - メインメモリとキャッシュから意図的に読み取るにはどうすればよいですか?

だから私はアセンブリを教えられており、メモリからの読み取りとキャッシュからの読み取りの時間差を見つけるという課題があります。これを行うには、2つのループを作成し、それらのタイミングを調整します。(1つはメインメモリから読み取り、もう1つはキャッシュから読み取ります)。問題は、キャッシュまたはメインメモリのいずれかから読み取る方法を教えてくれるものが何もわからないことです=/。助けてくれませんか?私はMASM32でこれを行っています。ループの作成方法とほとんどのアセンブリ言語は理解していますが、読み取らせることができません= /


編集:

私は質問があります、私はこれをしました...

...それは大丈夫でしょうか?


編集2:

それでは、私は詮索するつもりはありません。あなたの助けに感謝します。これらは私がしなければならない2つのループなので、別の質問があります。どういうわけかそれらを比較する必要があります、私はタイマー命令を探していましたが、私が見つけたものは見つかりませんでした:timeGetTimeGetTickCount、およびパフォーマンスカウンターしかし、私が理解している限り、これらの命令は時間ではなくシステム時間を返しますループが終了するまでにかかります。私がやりたいことを実際に行う方法はありますか?または私は別の方法を考える必要がありますか?

また、2番目のループ(キャッシュから読み取らないレジスタ)で異なるレジスタから読み取るために、さまざまな「mov」命令を与えても大丈夫ですか?それとも私はここで完全にベースから外れていますか?

このすべての質問について申し訳ありませんが、もう一度あなたの助けに感謝します。

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

syntax - 組み立てプロトタイプの説明

MASM32アセンブリで課題を書いていますが、ほぼ完了しましたが、答えられない質問が2つあります。まず、コンパイルすると次のメッセージが表示されます。

INVOKEには手順のプロトタイプが必要です

無効な命令オペランド

1つ目は、このコードによるものです。

今、私はそれを知っています

INVOKEディレクティブの前には、呼び出されるプロシージャのPROTOステートメントを付ける必要があります。

しかし、PROTOステートメントの構文を見つけたとしても:

私はそれを機能させるために何を書くべきかを正確に理解しておらず、2番目のエラーの原因や修正方法さえも知りません... = /


編集

私はすでにそれらのライブラリを持っており、これらも次のとおりです。

念のため、WindowsVistaで作業しています。


編集2

.dataの後にFreq:QWORDを書き込むと、次のエラーメッセージが表示されます。

エラーと見なされるレジスタの使用

また、どこに追加する必要があります

私の知る限り、これはエラーにはなりませんでしたが、それでも何も変更されていません(.dataの前とライブラリの後に配置しました)。

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

assembly - MASM32 ループ

Windows Vista で実行している masm32 でループを作成しようとしていますが、この方法で実行したところ、実際にループが終了してもクラッシュし、明らかな理由がわかりません...アイデアはありますか?


編集

やりました

それでも壊れる…

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

pointers - dwordptrの使用法の混乱

使用する場合はアセンブリ言語で

次に、ebxが指す値をコピーすることを意味します(ebxには実際の値ではなくアドレス値が含まれ、この命令はアドレスの実際の値をコピーします)?

使用する場合

次に、変数「some_variable」自体の値をeaxにコピーすることを意味し、変数「some_variable」が指す値をコピーするのではありませんか?

私の理解は正しいですか?

はいの場合、同じアセンブリ命令に2つの異なる意味がある理由がわかりません。最初のケースでは間接参照のレベルがありますが、2番目のケースでは追加の間接参照レベルはありません。

任意のコメント?

編集:

すべての[]が効果を発揮するわけではありません。たとえば、命令xchgは、edxが指す値をロードするin-directionのレベルを取ります。

ソースコード全体は、から見つけることができます、

http://www.codeproject.com/KB/threads/spinlocks.aspx