問題タブ [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 に答える
5783 参照

assembly - アセンブリでブートローダーを開発する

アセンブリで OS の一部を既に作成しましたが、GRUB を使用する代わりに、OS 用の独自のブートローダーも構築したいと考えています。アセンブリでテスト OS を開発していたとき、次のように起動したことを覚えています。

これはもう知っています。これを使用して、フロッピーの 2 番目のセクターに書き込まれる *.bin ファイルとなる「実際の」OS を実行します。それから私は何かを知りたいです

  • アセンブリでブートローダーを実行して、フロッピーの 2 番目のセクターで開始されるものを実行するにはどうすればよいですか?
  • フロッピーの 2 番目のセクターに配置されるアセンブリ ソースに何かを追加する必要がありますか?
0 投票する
2 に答える
260 参照

assembly - ASM.comは実行されません

このサンプルチュートリアルを見つけました。基本的なASMに関するnasmのHelloWorldの無知なガイドです。コンパイルすると、すべてがうまくいきます。すばらしいですが、実行すると次のメッセージが表示されます。

このバージョンのhi.comは、実行しているWindowsのバージョンと互換性がありません

これは、このコードを使用してWindows 7 x64(正常に実行されると言われています)で発生します

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

linux - nasmおよびldのアセンブリ/リンクの問題

nasmでコンパイルしたサンプルアセンブリファイルがあります。

これにより、syscall.oファイルが生成されます。私はそれをldとリンクしようとします:

ldコマンドは、次のエラーで失敗します。

しかし、私がそうするなら

コマンドは成功し、syscall実行可能ファイルを取得します。

nasmがx86-64形式のオブジェクトコードを生成していないことを確認し、syscall.asmファイルの先頭に「BITS64」ディレクティブを追加しました。

次に、nasmを使用してsyscall.asmをアセンブルしようとすると、次のエラーが発生しました。

私の端末で「file/usr / bin / nasm」を実行すると、次のようになるため、これは奇妙に思えます。

私の64ビットFedoraCore11には最新バージョンのnasmがインストールされており、私のCPUはIntel Core 2DuoE7200です。

[編集]

私の質問は、nasmにi386:x86-64と互換性のあるオブジェクトファイルを出力させる方法です。

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

nasm - Windows 7 の NASM プログラムでの I/O

NASM アセンブリ言語でプログラミングしたい。NASM 2.07 と Borland C++ コンパイラ 5.0 (bcc32) を使用しています。私の OS は Windows 7 です。Windows プラットフォームで NASM を使用して入出力を行う方法がわかりません。助けてくれますか?

0 投票する
0 に答える
496 参照

nasm - Windows 7 プラットフォーム上の NASM プログラムで I/O を実行する

文字を読み取って出力する NASM 2.07 サンプル プログラムを教えてください。また、アセンブル、リンクするコマンドも教えてください。私のコンパイラは Borland C++ 5.0(bcc32) で、OS は Windows 7 です。Windows 7 での NASM の I/O に関するチュートリアルはどこで入手できますか?

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

assembly - ブートローダーからマウスを読み取る/使用する方法は?

ブートローダからマウスを使用したいのですが、int33h が動作しません (DOS 割り込みが発生し、DOS ブートがありません)。

ありがとう

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

assembly - アセンブラでのアドレッシング

消化できないものがあります。私はいくつかのアセンブラを学んでいますが、今はアドレス指定の章にいます。逆参照のための括弧の概念は理解していますが、どういうわけかその使用法を見ると、その要点を理解できません。ここでもう少し正確に言うと、私の混乱が始まった場所です。

ここで例として、L1 は何らかのマクロであり、後でマシンコードの実アドレスに置き換えられると思いますよね?

したがって、この命令が行うことは、レジスタを逆参照しal(物理アドレスをほとんど変更できないため)、値を に格納されている値に変更することL1です。

今まではすべて問題ない場合:

類推すると、アドレスが保存されている必要があり (したがって、これを行うにはいくつかのポイントがありました)、メモリ内の別の場所に変更しますよね?

間違いがなければ大丈夫だと言っていただければ、そうしてください。そうすれば、私は学習を続けることができます。

最後にもう 1 つ、NASM は0xAA55私のコードの下にたくさんのコードを追加します (このシーケンスはプログラムを正しく終了するはずです?)。

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

assembly - MOV src、dest(または)MOV dest、src?

MOVは、おそらく、ASMを学びながら誰もが学ぶ最初の指示です。

ちょうど今、私はIA32アーキテクチャ用のGNU /LinuxでのAssemblyLanguageProgrammingという本に出会いました。RajatMoona著:(壊れたリンクは削除されました)

しかし、私はそれがであることを学びましたMOV dest, src。「Loadwith」のようなものdestですsrcウィキでも同じことを言っています。

著者が間違っていると言っているのではありません。私は彼が正しいことを知っています。しかし、私はここで何が欠けていますか?

asところで..彼はこれらの命令を組み立てるためにGCCを使用しています。しかし、それは命令構文を正しく変更するべきではありませんか?

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

c++ - nasm / yasm引数、C++へのリンク

nasmとC++へのリンクについて質問があります。litteテスト関数を次のように宣言します

extern "C" void __cdecl myTest( byte i1, byte i2, int stride, int *width );

そして私はそれをこのように呼びます:

このメソッドは、アセンブリをデバッグし、スタックポインタを使用して引数を取得する方法を確認するためにのみ機能します。それを超えると、ポインタ引数の値を7に設定して、それがどのように機能するかを理解する必要があります。これは次のように実装されます。

経由してコンパイル

、次にc++アプリにリンクします。デバッグモードでは、すべてが正常に機能します。関数は数回呼び出され、期待どおりに機能しますが、リリースモードでは、関数は1回機能しますが、後続のプログラム操作は失敗します。スタック/フレームポインタの近く/遠くに何か問題があるように思えますが、私はこの主題にまったく慣れておらず、少し助けが必要です。前もって感謝します!a。

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

assembly - [BITS 16] および [ORG 0x0000] ディレクティブの順序

カーネルを書いて、それを楽しんでいる実験を始めています。基本的なブートローダーと次のディレクティブを作成しました:

ただし、カーネルのチュートリアルでは、次のように始まります。

これらのディレクティブが与えられる順序が違いを生むかどうか疑問に思っていましたか? NASM バージョン 2.06rc2、OpenSUSE 11.2 を使用しています