問題タブ [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.
windows - ウィンドウが表示されない(x86 ASM、Windows)
リストボックスが入ったウィンドウを開こうとしています。ただし、何も起こりません。Windowsのタスクマネージャで約5秒間開いたままになり、その後閉じます。
Flat Assembler(http://flatassembler.net/)を使用して、プログラムをアセンブルおよびリンクしています。
assembly - X86アセンブリの浮動小数点除算は奇妙な結果をもたらします
私は現在、SimplyFPUチュートリアルを勉強しています。ですから、私自身の練習として、アセンブリでフローティングポイントを分割する方法を学びたいと思います。48.6を17.1で割るとします。これがコードです。
コードの出力は次のとおりです。
7.62883e + 265
ここで何が問題になりますか?
Jesterが提案したように、私はOllyDbgを使用してコードを調べました。
結果は正しかったと思いますが、どういうわけかprintfでめちゃくちゃになってしまいましたか?
assembly - x86 アセンブラ cpuid 出力関数 レジスタの解析結果
fasm プログラムを作成するcpuid
と、出力は次のようになります。
fprint
fromを使用し/lib/ld-linux.so.2
てこの出力を表示します。
EAX
したがって、すべての仕様を表示するには、いくつかの関数を使用して ,... regsからすべてのフラグを読み取る必要があります。
これは、レジスタからビットを読み取ること、またはcpuid
出力の 1 つの構造を作成することを意味します。
それを行うための1つの解決策を教えてもらえますか?
assembly - x86 アセンブリ: movsd 命令の問題
これは私の問題です: (in ) を使用して単一の浮動小数点値を入力
しようとしてから、 (in )のような単純な「scanf プログラム」を作成します。scanf
msvcrt.dll
flat assembler
C
次に、パラメーターを使用cl.exe
してコンパイルし、/FA
次のようなアセンブリ ファイルを生成します。
私が誤解しているのはmovsd
指導です。ここによると:http: //faydoc.tripod.com/cpu/movsb.htmですが、Move doubleword at address DS:(E)SI to address ES:(E)DI
設定はありません。ここと生成されたソースファイルには2つのパラメーターがありますが、リンク内のドキュメントではそうすべきではありません。誰かがここで私を説明できますか?esi
edi
movsd
assembly - as86 を fasm に変換する
この as86 用のアセンブリを fasm に変換しようとしています。3 つの質問があります。
1) seg es
与えられたerror: illegal instruction.
this が 16 ビットで有効でないのはなぜですか?
2) (FASM 構文) はmov byte [0],0x41
(as86 構文) とまったく同じmov [0],#0x41
ですか? そうでない場合、同等のものを見せてもらえますか?
3) entry start
FASM でエラーが発生するのはなぜですか?
アセンブリ コードは次のとおりです。
as86
そして、私が書いた fasm バージョン:
FASM
assembly - ASMx86FASMアセンブラで関数を宣言する
組み立ての最初の試み..helloworldをスキップして、すぐに飛び込んでCRC32Checksumを実行することにしました:l
今、私は混乱しています笑..
私の試み:
CRC32Checksumを呼び出すにはどうすればよいですか?私も正しい方向に進んでいますか?アセンブリで関数を宣言するにはどうすればよいですか?
function - ASM x86 FASM の関数パラメータ
アセンブリで関数にパラメーターを渡すにはどうすればよいですか? Last Paramをプッシュし、Second Paramをプッシュし、First Paramをプッシュしました..
しかし、関数内のパラメーターにアクセスできませんMeh
..私がやっていることはプログラムをクラッシュさせます..
assembly - アセンブリ ディレクティブをコンパイルしません
Flat Assembler を使用していますが、何かを実行しようとすると、アセンブラー ディレクティブのすべての行に「不正な命令」と書き込まれます。たとえば、以下のコードでは、 that .MODEL SMALL
is not legal と記述し、id がこの行を削除すると、 that .STACK 200H
is not legal と記述します。
このコードでは、次のように機能します。
assembly - この値を保持する方法
アセンブリ ルーチンによって変更される予約バイトがあります。
私はpusha
/* 仕事をしました */を使用してpopa
いましたが、セグメンテーション違反が発生します。
pusha
andpopa
をpush eax
push ecx
/* do my job */に置き換えると、正常にpop ecx
pop eax
動作します。
しかし、なぜこのセグフォルトが発生するのでしょうか? との関係はpusha
?
以下は私のコードの一部です。ここでは、8 つのレジスタのうち 2 つだけを使用します。ルーチンで 8 を使用する必要がある場合、各レジスタをプッシュ アンド ポップする必要がありますか? バフを維持する以外に方法はpusha
ありませんか?popa
seg fault を与えないでください:
bufは次のように定義されます。
セグメント読み取り可能書き込み可能
buf rb 12
linux - アセンブリ言語のポインタ
アセンブリでポインターを使用する方法を理解しようとしています。内部に関するいくつかのチュートリアルを読んで、いくつかの概念を理解したと思います。しかし、試してみると、うまくいきました。以下は、C を ASM に変換する試みです。
ハ
(これは完全なコードではありませんが、単語チェックであるため、0xFF0000、0xF000000 をそれぞれチェックする 2 つの stmts があります。
ASM:
セグフォルトを返します。
そして試してみてください:
これは gcc コンパイラによって生成され、他のアセンブリ コードで確認できます。
invalid symbol
FASM アセンブラー上。FASM で実際にサポートされていないか、何か不足していますか?