問題タブ [nasm]

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

assembly - 別のソースファイルを呼び出す

私はAssembly(アセンブラーとしてnasm)を使用して(16ビットで)プログラムを構築していますが、さまざまなソースファイルで整理するのが大好きです。main.asm2つのソースがあり、1つはと呼ばれ、もう1つはと呼ばれているとしましょう。ただし、コンテンツをの途中でsource2.asm呼び出したいと思います。どうすればこれを行うことができますか?source1.asmmain.asm

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

assembly - アセンブリ コードのコンパイル

NASM と DJGPP の「ld」コマンドで作成した ASM プログラムをコンパイルしようとしています。これは、コンパイルに使用しているバッチ ファイルのコードです。

しかし、ファイルを実行すると、次のようになります。

ビルド ファイルで、このエラー メッセージが表示される原因は何ですか?

編集

これは私のlink.ldファイルです:

編集

他に何も機能していないので、ここに私の ASM ファイルのコードを示します (私が取り組んでいるオペレーティング システムのカーネルを作成していました)。

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

assembly - 2 つの ORG をまとめる

1000hフロッピーの一部にあるコンテンツを起動するブートローダーを構築しています。私はFasmを使用してそれを行っていました(私の友人は Fasm しか使用しておらず、彼はこれを手伝ってくれていたので)、私はNasmを使用することを好み、今は構文に問題があります。どうすればよいか知りたいです。これはNasmで:

PS: 私はすでに%includeNasm 構文スタイルを使用してディレクティブを配置しています。Fasm では、include.

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

assembly - セクション/セグメントディレクティブはどのくらい重要ですか?

セクション/セグメントディレクティブはどのくらい重要ですか?それらは通常オプションであることに気づきました。また、含める場合と含めない場合で、出力サイズが変わることに気づきました。

それが助けになるなら、私はNASMを使用しています。

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

assembly - NASM と INT13h - 何が間違っているのでしょうか?

ねえ、私はOSの書き込みにかなり興味があります.私は長い間そうでしたが、まだそれを飲み込むことができませんでした. PHP、HTML、AS3.0、C++ など、私が行っている他のすべてにうまく適用できます。問題は - 本当に、特定のブートローダーが必要になるまで、ASM はそれほど興味深いものではありませんでした (GRUB などの他のブートローダーがあることは知っていますが、それは単なる長い話です)。

明らかに、最も重要な部分は、実際にディスクからイメージ セクターに何かを読み取り、そこにジャンプすることです。ただし、INT 0x13 と AH 0x02、つまり。ディスクからのセクターの読み取りが実際には機能していません(または、わかりません)。

だから、私はこの情報を見つけました: クリック

そして、Bochs で少し調べたところ、ディスクに関するセクター、シリンダー、ヘッドの数がすべてわかりました。

さて、それをテストするために、最初のセクターを読み取り、そこからいくつかの文字を出力したいと思いました.

しかし、それはただ...うまくいきません。バッファーを別の場所、メッセージ、別のセクターに配置しようとしています...指定されたポイントのそのような読み取りの例を誰かに見せてもらえますか?

ありがとう。

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

assembly - 文字列の長さのカウントに関するいくつかの質問

文字列の長さを数えるのに問題があります。私はいつも2432のような数字を受け取ります、あなたは「abc」のような文字列を渡します。

問題はこの行にあると思います

でも理由はわかりません。多分それはビット単位の文字長を持つものですか?

問題は64ビットオペレーティングシステムまたはデュアルコアプロセッサでしょうか?(最初の行の「ビット32」で問題が解決すると思うので、どういうわけか疑わしいです)。

PS:これは練習です。そのため、このように弦の長さを決定する必要があります。

コード:

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

x86 - OSのブートローダが動かない

カスタムオペレーティングシステムを作成しています。2 つの nasm ファイルがあります。

ブート.asm:

開始.asm:

次のコマンドを使用して、それらを .bin ファイルにコンパイルします。

次に、次のコマンドを使用して、それらをフロッピー イメージに追加します。

VirtualBox のフロッピー イメージから起動すると、感嘆符が 1 つではなく 2 つ表示され、QEmu (Q.app) で起動することさえできません。私はオペレーティング システムの開発に慣れていないので、どこが間違っていたのか、OS をより適切にセットアップする方法について誰かが教えてくれたらうれしいです。

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

assembly - Intel IAPX88プロセッサ、トラップISR

次のコードを投稿しています。このコードの基本的な目的は、トラップフラグを1に設定した後、画面に文字zを印刷することです。トラップフラグが設定されると、プログラムは1つを実行する必要があります。命令とトラップ、私は無限ループを持つ単純なトラップISRを作成しました。プログラムのkbisrという名前のキーボードisrでF2キーのスキャンコードを確認できるように、F2キーを押すとこの無限ループが壊れます。これは私がこのプログラムから達成したい機能ですが、それを実行していません。このコードをチェックして、私がそれで何が間違っているのか教えてください。これがコードです

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

linux - ubuntuでnasm(アセンブリ)を使用してキーボードから1文字の入力を読み取るにはどうすればよいですか?

ubuntuでnasmを使用しています。ちなみに、ユーザーのキーボードから単一の入力文字を取得する必要があるため (プログラムが y/n を要求する場合など)、キーを押して Enter キーを押さずに、入力した文字を読み取る必要があります。私はそれをたくさんグーグルで検索しましたが、私が見つけたものはすべてint 21h、「セグメンテーション違反」を引き起こすこの行 ( ) に何らかの形で関連していました。単一の文字を取得する方法、またはこのセグメンテーション違反を克服する方法を理解するのを手伝ってください.

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

com - x86アセンブリでのCOMオブジェクトvtableの構築

NASMを使用してx86アセンブリでCOMオブジェクトを構築しています。私はCOMを非常によく理解しており、x86アセンブリをかなりよく理解していますが、2つをメッシュ化すると、ハングアップします...(ちなみに、x86アセンブリの使用を思いとどまらせることを考えている場合は、ご遠慮ください。これをx86アセンブリで構築するのには特別な理由があります!)

COMオブジェクトで使用するvtableを作成しようとしていますが、関数への実際のポインターではなく、奇妙なポインターを取得し続けています。(相対的なオフセットを取得しているか、NASMが一時的な値をそこに埋め込んでおり、リンク中に実際の値に置き換えられていないと考えています)

私が構築しようとしている現在のインターフェースは、IClassFactory次のようなコードのインターフェースです。

注:これはすべてのコードではありません。別のファイルにDllGetClassObject、DllMainなどがあります。

しかし、(NASM:を使用して)アセンブルして(nasm -f win32 comobject.asmMS Link:を使用して)リンクlink /dll /subsystem:windows /out:comobject.dll comobject.objし、OllyDbgを使用して実行可能ファイルを調べると、vtableに奇妙な値が表示されます。たとえば、前回のビルドでは、関数の実際のアドレスは次のとおりです。

  • QueryInterface-0x00381012
  • AddRef-0x0038101A
  • リリース-0x00381020
  • CreateInstance-0x00381026
  • LockServer-0x0038102E

しかし、vtableは次の値で出てきました:

  • QueryInterface-0x00F51012
  • AddRef-0x00F5101A
  • リリース-0x00F51020
  • CreateInstance-0x00F51026
  • LockServer-0x00F5102E

これらの値はひどく疑わしいように見えます...ほとんど移転が行われなかったように。また、vtableは0x00F5104Aとして出力され、これらはすべてアクセスできないメモリアドレスです。(情報提供の目的で、これらの値は毎回異なります

Visual Studio 2010Expressを使用してC++で同じことを試してみましたが、すべてうまくいきました。だから私はそれが私のアセンブリに欠けているものだと思います...


これらの値が適切に出力されない理由を誰かが私に指摘できますか?