問題タブ [intel-8080]
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.
assembly - この 8080 アセンブリ コードの「パズル」を解ける人はいますか?
私の友人は、解決しようとしているパズルの一部として 8080 アセンブリ コードを与えられました。これはコードです:
B、DE、C、および HL の値が必要です。
誰かがこれを解決したり、これを実行する方法について正しい方向に向けたりできますか?
アップデート
ネタバレ:解決策は次のようです:
C = 02、B = 06、D = 01、E = 41、H = 01、L = AA
interrupt - Intel 8080で割り込みはどのように機能しますか?
Intel 8080で割り込みはどのように機能しますか?GoogleとIntelの公式ドキュメント(197X)を検索しましたが、これについての説明はほんの少ししか見つかりませんでした。このCPUをエミュレートするには、詳細な説明が必要です。
assembly - Intel 8080命令...「DAD」命令ニーモニックの語源は何ですか?
CharlesPetzoldの優れた本CodeでIntel8080プロセッサについて学んでいます。DAD命令は、それが何を達成するかについて説明されましたが、このようなアルファベットコードについては、それらが何を表すのかを知る必要があるという奇妙なことがあります。たとえば、ADCはADdwithCarryの略です。または、借り入れを伴うSuBtractのSBB。
しかし、DADはどうですか?それは私が知っているばかげた質問ですが、誰かが答えを知っているかどうか疑問に思います。グーグルは何も生み出していない...
assembly - Intel 8080:メモリオフセットの計算
Intel8080エミュレーションエミュレータ101に関するこのガイドを読んでいて、自分が書いたものを確認するためにコードを読んでいるときに、これに遭遇しました。
Intel 8080/8085アセンブリ言語プログラミングという本から、私はMVIについてこれを読みました
この命令は、2番目のバイトに格納されているデータをHとLによってアドレス指定されたメモリ位置にコピーします。Mは、HとLのレジスタペアへのシンボリックリファレンスです。
だから、オフセットはHとLによってアドレス指定されたメモリ位置であると推測していますが、なぜそのようにするのですか?あれは(state->h<<8) | state->l
ありがとう
port - インテル 8080 命令: OUT
私は Intel 8080 命令セットをエミュレートしようとしていますOUT D8
が、本Intel 8080/8085 Assembly Language Programmingによると、この命令に行き詰まりました。
OUT
この命令は、アキュムレータの内容を 8 ビットのデータ バスに配置し、選択したポートの番号を 16 ビットのアドレス バスに配置します。ポート数は 0 ~ 255 であるため、アドレスバス上でポート番号が重複しています。
問題は、これが何をするのか理解できなかったということです。誰かが私にそれを説明してくれるか、それを説明している記事や本を紹介してくれませんか?
assembly - 8 ビットおよび 16 ビット プロセッサは、2 つのレジスタを使用してより多くの RAM にアクセスするにはどうすればよいですか?
私を常に混乱させてきたのは、8 ビット コンピュータが 256 バイトを超える RAM にアクセスする方法です。2 つのレジスタを使用する必要があることはわかっていますが、これがアセンブリ コードでどのようになるかを示す例を教えてください。
お気に入り:
assembly - Intel 8080 エミュレーター テスター
Intel 8080 用のエミュレーターを作成しました。実装した命令が正しいかどうかを確認したいと思います。テストスイートまたは各命令が正しいかどうかをテストする方法はありますか?
私のエミュレータはCで書かれています。
intel-8080 - CP/M での ROM イメージのビルド
CP/M で由緒ある M80 および L80 ツールを使用して ROM イメージを構築しようとしています。(これは CP/M エミュレータ用であるため、CP/M ツールを使用している理由です。)
残念ながら、L80 は非常に粗雑なようです --- AFAICT では、各オブジェクト ファイルを絶対アドレスにロードし、修正してから、0x0100 からすべてをディスクにダンプします。これは、自身のワークスペース外のアドレスに基づくオブジェクト ファイルがまったく機能していないように見えることを意味します (エラー メッセージが表示されるだけです)。私の ROM には 0xd000 のベース アドレスがあり、これはかなり外側にあります。
M80 と L80 を使用してこれを行うことが可能かどうかは誰にもわかりません。または、CP/M アセンブラー/リンカー スイートを推奨する (そして私を指差す!) ことはできますか?
(可能であれば、クロスコンパイルを避けたいことに注意してください。)
assembly - Intel 8080 のアセンブリを使用した形状の印刷
教科書の演習として、Intel 8080 のアセンブリでプログラムをコーディングしようとしています。これは、上の行で下向きの 3 つの三角形と下の行で上向きの 2 つの三角形のスケーラブルなイメージを印刷します。正確には、そのようなもの:
と:
とはいえ、アセンブリ初心者の私は、このような実装を 6 つのレジスタのみを使用して実装することを想像するのに非常に苦労しています。また、言語自体の扱いにくさを念頭に置いています。私が思いつくことができる最高のものは次のとおりです。
最初の行は 6*height-1 であることがわかっているので、問題ありません。ただし、問題は後で始まります。追跡する必要があるようです (簡単にするために名前を付けます):
- outer_margin
- 外側の三角形の左右にあるスペースの数。これは行ごとにインクリメントされますが、上部の三角形を描画した後は機能しないため、レジスタに新しい値が必要になります。つまり、三角形の間のスペースです
。inner_spaces
最初に、それらは 3、5、そして下の三角形の一番下に到達するまで 3 になります。問題は、最初の 2 行の後で、より頻繁に表示される必要があること
ですup_star_counter
。行の上の三角形のそれぞれ
- down_star_counter
- 同じですが、一番下の行の三角形
-row
- 下の三角形も出力する一連のラベルの使用をいつ開始するかがわかるように、行を追跡します
- height
- ユーザーが入力した各三角形の高さを保持する変数
これにより、6 つのレジスタ (および空きアキュムレータ) に対して 6 つの値が得られますが、これはあまり楽観的ではありません。また、これの実装は悪夢のようです。ここで欠けているものがあり、タスクを何らかの形で単純化しますか、それとも見た目と同じくらい難しいですか?