問題タブ [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.
nasm - レジスタの内容を 16 進数で出力するにはどうすればよいですか
私は現在NASMを使い始めており、NASMでレジスタの内容を16進数で出力する方法を知りたいと思っていました。eaxの内容を出力できます
eax に 0x44444444 が含まれているとします。出力は「DDDD」になります。どうやら「44」の各ペアは「D」として解釈されます。私の ASCII テーブルはこれを承認します。
しかし、実際のレジスタの内容 (0x44444444) をプログラムに出力させるにはどうすればよいでしょうか?
assembly - 別のソースファイルを呼び出す
私はAssembly(アセンブラーとしてnasm)を使用して(16ビットで)プログラムを構築していますが、さまざまなソースファイルで整理するのが大好きです。main.asm
2つのソースがあり、1つはと呼ばれ、もう1つはと呼ばれているとしましょう。ただし、コンテンツをの途中でsource2.asm
呼び出したいと思います。どうすればこれを行うことができますか?source1.asm
main.asm
assembly - アセンブリ コードのコンパイル
NASM と DJGPP の「ld」コマンドで作成した ASM プログラムをコンパイルしようとしています。これは、コンパイルに使用しているバッチ ファイルのコードです。
しかし、ファイルを実行すると、次のようになります。
ビルド ファイルで、このエラー メッセージが表示される原因は何ですか?
編集
これは私のlink.ldファイルです:
編集
他に何も機能していないので、ここに私の ASM ファイルのコードを示します (私が取り組んでいるオペレーティング システムのカーネルを作成していました)。
assembly - セクション/セグメントディレクティブはどのくらい重要ですか?
セクション/セグメントディレクティブはどのくらい重要ですか?それらは通常オプションであることに気づきました。また、含める場合と含めない場合で、出力サイズが変わることに気づきました。
それが助けになるなら、私はNASMを使用しています。
assembly - NASM と INT13h - 何が間違っているのでしょうか?
ねえ、私はOSの書き込みにかなり興味があります.私は長い間そうでしたが、まだそれを飲み込むことができませんでした. PHP、HTML、AS3.0、C++ など、私が行っている他のすべてにうまく適用できます。問題は - 本当に、特定のブートローダーが必要になるまで、ASM はそれほど興味深いものではありませんでした (GRUB などの他のブートローダーがあることは知っていますが、それは単なる長い話です)。
明らかに、最も重要な部分は、実際にディスクからイメージ セクターに何かを読み取り、そこにジャンプすることです。ただし、INT 0x13 と AH 0x02、つまり。ディスクからのセクターの読み取りが実際には機能していません(または、わかりません)。
だから、私はこの情報を見つけました: クリック
そして、Bochs で少し調べたところ、ディスクに関するセクター、シリンダー、ヘッドの数がすべてわかりました。
さて、それをテストするために、最初のセクターを読み取り、そこからいくつかの文字を出力したいと思いました.
しかし、それはただ...うまくいきません。バッファーを別の場所、メッセージ、別のセクターに配置しようとしています...指定されたポイントのそのような読み取りの例を誰かに見せてもらえますか?
ありがとう。
assembly - 文字列の長さのカウントに関するいくつかの質問
文字列の長さを数えるのに問題があります。私はいつも2432のような数字を受け取ります、あなたは「abc」のような文字列を渡します。
問題はこの行にあると思います
でも理由はわかりません。多分それはビット単位の文字長を持つものですか?
問題は64ビットオペレーティングシステムまたはデュアルコアプロセッサでしょうか?(最初の行の「ビット32」で問題が解決すると思うので、どういうわけか疑わしいです)。
PS:これは練習です。そのため、このように弦の長さを決定する必要があります。
コード:
x86 - OSのブートローダが動かない
カスタムオペレーティングシステムを作成しています。2 つの nasm ファイルがあります。
ブート.asm:
開始.asm:
次のコマンドを使用して、それらを .bin ファイルにコンパイルします。
次に、次のコマンドを使用して、それらをフロッピー イメージに追加します。
VirtualBox のフロッピー イメージから起動すると、感嘆符が 1 つではなく 2 つ表示され、QEmu (Q.app) で起動することさえできません。私はオペレーティング システムの開発に慣れていないので、どこが間違っていたのか、OS をより適切にセットアップする方法について誰かが教えてくれたらうれしいです。
assembly - Intel IAPX88プロセッサ、トラップISR
次のコードを投稿しています。このコードの基本的な目的は、トラップフラグを1に設定した後、画面に文字zを印刷することです。トラップフラグが設定されると、プログラムは1つを実行する必要があります。命令とトラップ、私は無限ループを持つ単純なトラップISRを作成しました。プログラムのkbisrという名前のキーボードisrでF2キーのスキャンコードを確認できるように、F2キーを押すとこの無限ループが壊れます。これは私がこのプログラムから達成したい機能ですが、それを実行していません。このコードをチェックして、私がそれで何が間違っているのか教えてください。これがコードです
linux - ubuntuでnasm(アセンブリ)を使用してキーボードから1文字の入力を読み取るにはどうすればよいですか?
ubuntuでnasmを使用しています。ちなみに、ユーザーのキーボードから単一の入力文字を取得する必要があるため (プログラムが y/n を要求する場合など)、キーを押して Enter キーを押さずに、入力した文字を読み取る必要があります。私はそれをたくさんグーグルで検索しましたが、私が見つけたものはすべてint 21h
、「セグメンテーション違反」を引き起こすこの行 ( ) に何らかの形で関連していました。単一の文字を取得する方法、またはこのセグメンテーション違反を克服する方法を理解するのを手伝ってください.