問題タブ [x86-16]

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

c - 8086 を対象とする C コンパイラはありますか?

私は 8086 CPU エミュレーターを持っています。8086 命令のみをエミュレートします。現在、このエミュレータを対象とする C コンパイラを探しています。これを実行できる C コンパイラはありますか?

また、使用可能なlibcなどは私にとって重要ではありません。エミュレーターはカスタム (PC 以外の) ハードウェアを使用するため、libc や ctr0 を書き換える必要があります。

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

c - x86命令でAFフラグがどのように機能するかを説明してください。

私は小さな8086エミュレーターを持っていますが、AFがsub内で適切に動作せず、命令を追加するようになったため、2年ほど長い間バグがありました。

その値を計算する私の現在の方法は、8ビットの数値と減算の場合です。

(のような命令を想定sub base,subt

そしてそれを追加するためにそれはこのようです:

(のような命令の場合add base,adder

このような命令について、エミュレータでAFフラグを正しく計算するにはどうすればよいですか?

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

assembly - アセンブリ言語の多次元配列

こんにちはすべてできます誰でも1つのplzが8086アセンブリ言語で2D配列を処理する方法を教えてくれます。私はアセンブリ言語プログラミングの初心者です。ありがとう

0 投票する
5 に答える
2235 参照

assembly - 最初のゼロ ビット (アセンブリ) をスキャンしますか?

AH、AL、BL、および BHレジスタにいくつかの数字があります。数値の上位ニブルのレジスタに少なくとも 1 つの 0 ビットがあるかどうかを確認する必要があります。ある場合はcheck 10という変数に入れ、そうでない場合は -10 にします。

これが私が試したことです:

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

emulation - MS-DOSを実行しているコンピュータをエミュレートする

エミュレーターを書くことはいつも私を魅了してきました。次に、IBM PC用のエミュレーターを作成し、その上でMS-DOSを実行します(フロッピーイメージファイルがあります)。

私はC++とCの経験が豊富で、アセンブラとCPUのアーキテクチャに関する基本的な知識があります。また、私がやりたいことを正確に実行しているエミュレーターが何千もあることも知っていますが、これは純粋な喜びのためだけに実行します。

  • どのくらいの仕事を期待する必要がありますか?(私の目標がDOSを起動し、それを使用してテキストファイルを作成することである場合、すべてエミュレートされます)

  • どのCPUをエミュレートする必要がありますか?マシンコードがどのように編成され、どのオペコードが何を意味するかについてのドキュメントはどこにありますか?それで、エミュレーターでそれらを正しく解凍して実行できますか?

  • MS-DOSはまだ最新世代のプロセッサで動作しますか?理論的には、最新のメインボード、HDD、RAMなどを搭載した64ビットAMD Phenom 2プロセッサでネイティブに実行できますか?

  • CPUをエミュレートする以外に、(難易度の観点から)重要な要素になる可能性があるものは他にありますか?私は、ホストシステムのコンソールを介してシステムにテキストを出力/入力することのみを目的としており、音声やその他のより高度なIOなどはありません。

  • エミュレーターはもう作成しましたか?あなたの最初のものは何でしたか?どれくらい大変でしたか?何か特別なアドバイスはありますか?

前もって感謝します

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

assembly - アセンブリ内の2D配列

データセクションで2d配列と2つの1d配列(1つは列の合計用、もう1つは行の合計用)を定義し、2d配列を1d配列に合計する関数を作成しました。eaxとebxの両方を2d配列のインデックスとして使用していますが、eaxまたはebxが1の場合、メモリ内の不明なアドレスにアクセスしようとすると、プログラムが失敗します。この行のメモリへのアクセスを修正するにはどうすればよいですか?

これは私のプログラムです:

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

assembly - 複数の条件付きジャンプの組み立て

次の疑似コード (アセンブリ 8086 へ) のジャンプを整理できません。

私はそのようなことを試しました:

このコードを修正する方法はありますか?

0 投票する
9 に答える
55895 参照

assembly - レジスタをゼロに設定する方法はいくつありますか?

x86アセンブリでレジスタをゼロに設定する方法がいくつあるのか知りたいです。1 つの命令を使用します。少なくとも 10 通りの方法を見つけることができたという人もいました。

私が考えることができるものは次のとおりです。

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

assembly - 配列内の偶数を数えて平均し、素数をチェックします

( ) を使用すると、ディスプレイはすべて ASCII になりますmov al,2; int 21h

すべてではなく、1 つの条件のみを確認できます。まとめてチェックして出力するにはどうしたらいいですか?

私の課題は

配列内に事前に格納された 1 バイトの正の整数要素のセットを考えてみましょう。以下をせよ。

  1. 配列内の要素の数を数えて表示します。
  2. 特定のしきい値未満のすべての数値を識別して表示します (このしきい値は必要に応じて設定できます)。何もない場合は、メッセージを表示します。
  3. 偶数を特定し、それらを数えて、それらの平均を計算します。結果を表示します。
  4. 配列内のすべての素数を識別して表示します。
0 投票する
1 に答える
1690 参照

assembly - 2 ^16を超えるアドレスへのIN/OUTアクセス?

IN / OUT命令を使用して、アドレスが216より大きい周辺機器にデータをロード/保存するにはどうすればよいですか。

IN / OUT命令を使用すると、たとえば、DXのセグメントレジスタが使用されていないため、最初の2つの16OUT DX, ALアドレスにしかアクセスできないことがわかります(DXは16ビット幅であるため)。

私のデバイスの1つはアドレスにあります18000h。どうすれば到達できますか?メモリ/IOスペースがオーバーラップしている(M / IOピンは使用されていない)ので、次のように言っても大丈夫です