問題タブ [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.
operating-system - nasm で 32 ビットと 16 ビットのコードを混在させる
これはシステムに関する低レベルの質問です。
プロテクト モードからリアル モードに戻ろうとしているので、32 ビット コードと 16 ビット コードを混在させる必要があります。ちょっとした背景情報として、私のコードは GRUB の起動直後にこれを行っているので、できることとできないことを教えてくれる厄介なオペレーティング システムはありません。
とにかく、アセンブリで [BITS 32] と [BITS 16] を使用して、どのタイプの操作を使用する必要があるかを nasm に伝えますが、コードをテストすると、bochs を使用して、いくつかの操作で bochs が実行されていないコードのように見えます私が書いた。0x66
アセンブラがエクストラと's に固執しているように見え、0x67
bochs を混乱させます。
では、同じファイルに 32 ビットと 16 ビットのコードが混在している場合に、nasm でコードを正常にアセンブルするにはどうすればよいでしょうか? 何か裏技あるの?
assembly - アセンブリ プログラムを実行できません
Introduction to 80x86 Assembly Language and Computer Architecture を読み始めたところです。第 3 章に示されている最初の例を実行するために NASM を使用しようとしていますが、うまくいきませんでした。
linux - このNASMコードが環境変数を出力するのはなぜですか?
私は今学期にコンピュータアーキテクチャコースを終えたところです。ここでは、とりわけ、MIPSアセンブリに手を出し、MARSシミュレータで実行しています。今日、好奇心から、UbuntuボックスでNASMをいじり始めました。基本的には、チュートリアルから物事をつなぎ合わせて、NASMがMIPSとどのように違うのかを感じ取っています。これが私が現在見ているコードスニペットです:
これはtest.asmとして保存され、とアセンブルnasm -f elf test.asm
およびリンクされld -o test test.o
ます。を使用して呼び出すと./test anArgument
、期待どおりに'anArgument'が出力され、その後に、その文字列を合計200文字まで埋めるのに必要な文字数が続きます(そのmov edx, 200
ステートメントのため)。ただし、興味深いのは、これらのパディング文字は、env
コマンドで表示されるように、実際には環境変数の最初からのものであるということです。なぜこれが私の環境変数を出力するのですか?
assembly - (N)ASM を学習するのに最適なリソースは何ですか?
以前から組み立てを学びたいと思っていて、何度かやってみましたが、「Hello, world」からなかなか抜けられませんでした。アセンブリに関する優れた入門チュートリアルはありますか (私は Windows と Linux を使用しているため、できれば NASM を使用します)。
C の知識は少しありますが、主に Ruby、Python、C#、JavaScript などの高水準言語でコーディングしています。
assembly - ドルで終了する文字列
私のアセンブリ言語クラスでは、最初の課題は、DOSでドルで終わる単純な文字列を出力するプログラムを作成することでした。次のようになりました。
私が理解しているように、$記号は、Cのnullのように刺し傷を終わらせるのに役立ちます。しかし、文字列にドル記号を入れたい場合(「30ドルかかる」と印刷したい場合など)はどうすればよいですか?これは簡単な質問のように思えますが、私の教授は答えを知りませんでした、そして私はグーグル検索を使ってそれを見つけられないようです。
assembly - NASM でユーザー入力を取得するにはどうすればよいですか?
プログラムは、ユーザーから単純な文字列を受け取り、それを表示する必要があります。ユーザーからの入力を取得するプログラムを取得しましたが、保存できないようです。これが私がこれまでに持っているものです:
NASM を使用してこれを組み立てています。
c - Debian で DOS プログラムをコンパイルするにはどうすればよいですか?
私のアセンブリ言語クラスでは、DPMI を使用して DOS プログラムを作成しています。残念ながら、私は常に 32 ビットの Windows マシンにアクセスできるわけではありません。私が使用するほぼすべてのコンピューターに Debian 仮想マシンがインストールされています。
DOSBox と DOSEMU の両方をインストールしました。DOS ではなく Linux でプログラムをアセンブルおよびコンパイルする方法はありますか? 私はnasmを使用しているので、DOS形式で組み立てるのに問題はないようです。ただし、C コードを使用してコンパイラを介して実行し、DOS 実行可能ファイルを取得するのに問題があります (gcc または MinGW を使用)。
これを行う方法はありますか、それとも DOS ですべてのツールをインストールする必要がありますか?
assembly - NASMの「プッシュバイト」をGAS構文に変換する方法は?
NASMソースをGASに「移植」していて、次のコード行が見つかりました。
GASは「pushbyte」または「pushb」を許可しません。
上記のコードをGAS構文に変換するにはどうすればよいですか?
ありがとう
assembly - いくつかの優れたx86アセンブリ言語リソースは何ですか?
アセンブリ言語(より具体的にはnasm)で学習およびプログラミングするための優れたオンラインリソース(参考書、書籍、チュートリアル、ドキュメントなど)は何ですか?アセンブリ言語のいくつかはかなり難解であるように思われ、私は時々それに関する良い情報を見つけるのに問題があります。
objective-c - Objective C でのアセンブリ ルーチンの呼び出し
次のように、アセンブリ ファイル math.nasm に関数 nabs を記述しました。
ファイル myfunc.c の c 関数 func1 からこの関数を呼び出しています
アセンブリ ファイルに nasm アセンブラを使用しています X コード 3.1 バージョンと gcc 4.0 コンパイラを使用しています USE_x86_ASM を定義しました
Xcode 設定で Project Settings/Build/NASM BUILD OPTIONs/OTHER FLAGS AS -DUSE_X86_ASM
また、ヘッダー ファイル myfunc.h でこのプリプロセッサを定義
し、myfunc.h で nABS を次のように宣言しました。
myfunc.c とmyfunc.c に myfunc.h を含めました myfunc.c と math.nasm の
両方が sussessful にコンパイルされ、math.o と myfunc.o が生成されますが、リンク エラーが発生します
リンクエラーが発生する理由を誰か教えてもらえますか?
提案された変更を行い、さらに%ifdef条件を削除しました変更されたコードは次のとおりです
_nABS: push ebx ...... ...... pop ebx
ret まだファイルがコンパイルされているのと同じリンク エラーが発生しますが、同じリンク エラーが発生します。生成された .o に app.LinkFileList が含まれていることを確認しました。