問題タブ [real-mode]

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 に答える
386 参照

assembly - このコードでは DS と CS が重複していますか

私はリアルモードでプログラミングを学んでいて、私にとって非常に役立つSOに関する投稿を見つけましたが、特定のコードで物事がどのように機能しているかについて疑問があります

基本的な NASM ブートストラップ

1)DS と CS はここで重複していますか??

2)CS は 0h の位置から始まりますか?? ここに画像の説明を入力、添付の画像は、アセンブラによって生成されたブートセクタである 512 バイトを示しています

3)DS、CSともに07c00Hから開始されていますか?? まず、文字列のデータを入れる前にコード部分を埋めます

4) スタックは 07c00+288 から始まりますか?? mov sp,4096 は (07c00+288+4096-07c00+288) のサイズのスタックを定義します。

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

assembly - 現在実行中のコードのレジスタを設定しようとするとどうなるでしょうか?

CodeProject に記事があります:

CS は、現在実行中のコードのセグメントを常に保持します。mov cs,ax などを使用して CS を設定することはできません。別のセグメントにある関数を呼び出す (FAR 呼び出し) か、別のセグメントにジャンプする (FAR ジャンプ) と、CS が変化します。

では、を使用してレジスタを直接変更しようとするとどうなるmov cs, axでしょうか?

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

assembly - %ds:(%bx) のような x86 アセンブリ GAS 構文で、コロン : は何を意味しますか?

私は x86 アセンブリに不慣れで、このドキュメントのコードを理解しようとしています: http://www.cs.cmu.edu/~410-s07/p4/p4-boot.pdfページ 3:

しかし、私はコマンドを理解していません:

%ds と (%bx) の連結が ((%ds << 4) | %bx) と同じなのはなぜですか?

私はリアル モード (16 ビット) であるため、連結は %ds << 8であってはなりません。%ds << 4の代わりに?

そして、括弧が %bx のすぐ近くにあるのはなぜですか? そして、次のような構造全体ではありません: movw $0x1337, (%ds:%bx) ?

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

operating-system - リアル モード プログラムとプロテクト モード プログラムの本当の違いは何ですか?

OSとハードウェアの観点から、リアルモードとプロテクトモードの違いを知っています。

しかし、私は、プログラムがリアルモードまたはプロテクトモードについて何を「知っている」のかを理解しようとしています? ソース コード/オブジェクト コードを見ながら、それがリアル モード プログラムであるかどうかをどのように判断できますか?

答えを探していると、「リアルモード」プログラムは OS サブルーチンとともに BIOS サブルーチンを使用するのに対し、「プロテクトモード」プログラムは OS サブルーチンのみを使用するということしか思いつきません。レジスタのオペコードが異なり、オフセット アドレスの長さが異なるため、命令コードが異なります。リアル モード プログラムとプロテクト モード プログラムを区別する他の機能はありますか?

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

assembly - セグメント オフセット ペア bs セグメント記述子

32 ビット プロセッサのセグメント記述子と比較して、物理アドレス計算用の 8088 のセグメント オフセット ペアの違いを理解するのに少し混乱しています。

どんな説明でも大歓迎です。

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

assembly - 8086 リアル モードで使用できる割り込みは何ですか?

BIOS 割り込みについて読み、8086 リアル モードでのみアクセスできることを知っています。

私の質問:

  • 他にも利用可能な割り込みはありますか? DOS 割り込みについて読んだことがありますが、それらがリアル モードでも使用できるかどうか、および DOS 割り込みのリストが何であるかについて混乱しています。

  • 保護モードに入ると、 0x00 に保存されている BIOS 割り込みテーブルはどうなりますか? それは置き換えられますか、それとも存在しますがアクセスできないだけですか?

  • 0x13 や 0x19 などの BIOS 割り込みはどのように実装されていますか? それはソフトウェア内ですか、それともプロセッサ経由ですか?
0 投票する
0 に答える
227 参照

usb - BIOS INT 0x13 関数 8

x86リアルモードでBIOS割り込み0x13関数8を使用してUSBドライブパラメーターを取得しようとしています。トラックあたりのヘッド数 (HPC パラメータ) が必要です。どの値をレジスターに渡し、結果はどのレジスターに格納されますか? 返された結果から HPC 値を取得するために実行する追加のビット単位の計算はありますか?

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

assembly - アセンブリで通常のバイトをASCIIに変換する方法は?

メモリをダンプするリアル モード オペレーティング システム用の関数を作成しようとしています。バイト 0x0a を '0A' として表示し、0xf3 を 'F3' として表示するなどを行います。私が書いたコードは、「0123456789ABCDEF」で構成されるテーブルを使用し、個々のニブルをオフセットとして使用して正しい文字を見つけます。最初に、 にある値を保存しますal。次に、4 だけ右にシフトalし、下位ニブルを削除して上位ニブルを下に移動します。次に、テーブルを にロードしdi、ゼロを設定しahます。次に、オフセットを見つけるために を追加axします。di次に、値を移動しますdial に変換して出力します。次に、上位ニブルの代わりに下位ニブルを使用することを除いて、同じ手順に従います。ただし、実行すると、実際の16進数ではなく、「33」が繰り返し出力されるだけです。これが私のコードです:

それの何が問題なのですか?前もって感謝します。

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

assembly - BIOS 割り込みを使用してアセンブリ オペレーティング システムの次の行にカーソルを移動できません

私は単純な 16 ビット リアル モード オペレーティング システムを作成しています。カーソルを次の行に移動するコードを以下に記述しましたが、他の間のコマンド。

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

assembly - アセンブリの行に値を一時的に格納する方法は?

私は 16 ビットのリアル モード オペレーティング システムを作成しており、ユーザーが入力するコマンドを渡したいと考えています。入力はできますが、後で解析できるように結果の文字列を格納する方法がわかりません。各キャラクターをスタックに置き、使用したいときにポップしてリバースするよりも良い方法はありますか?

私のメインループ:

ちなみにOSはMOOSという。

助けてくれる人に感謝します。