これについて考える 1 つの方法は、8080 およびその派生製品には、通常引用される 16 ビット バスではなく、17 ビット アドレス バスがあるということです。そのアドレス バスの最上位ビットは、チップの入出力要求ライン (IORQ) です。
通常のロードとストアを使用すると、最上位ビットは常にリセットされます。インまたはアウトを実行すると、常に最上位ビットが設定されます。
Intel がラインに名前を付け、周辺チップとの通信に使用されることを期待していたため、その名前、利用可能なアドレッシングのはるかに制限された形式、アクセスの拡張コスト、およびプログラムカウンターもスタックポインターもそれを指すことができないという事実アドレス空間の領域。
これにより、Intel は 16 ビットのアドレス バスを使用しているにもかかわらず、8 ビットのパラメーターしか使用していないという問題を抱えています。彼らが実際に行うことは、アキュムレータを上位 8 ビットにロードすることです。あなたが持っていた場合:
LD A, 0xfe
OUT (0xdc)
次に、値 0xfe がポート アドレス 0xfedc に出力されます。
(余談: Intel ではなく Zilog 構文の謝罪。おそらく興味深いことに、Z80 は、OUT (C), A
単なる C ではなく BC 全体を実際にアドレス バスにダンプするような一連の命令を追加し、ほとんどの Z80 マイクロ メーカーは完全な 16 を使用することに完全に満足していました。 -外部周辺機器用にまともな範囲を残しながら、「このアドレスラインが低い場合にコンポーネントがアドレス指定されている」という単純化されたロジックを使用できるようにするためのビットアドレス)