6

Z80のZilogデータシートから、I / O(INおよびOUT)グループの命令では、さまざまなレジスタの内容がアドレスバスの上位8ビット(命令に応じて)に配置されることがよくあります。理論的に接続された最大256のデバイスの1つを選択する下位8ビット。

私の質問は、これらの上位8ビットでこれを行うことのポイントは何ですか?一部のマシンは、デコードの複雑さの軽減に関連してこれを使用していることを知っていますが、それらは何かに真剣に使用されていますか?Z80が提案するとおりに命令を実装したいのですが、この動作は非標準であるため、実装する意味がわかりません。この動作は文書化されていないものとして説明されているので、たとえば「セガマスターシステム」ではこれを回避できますか?どうもありがとう。

よろしく、フィルポッター

4

3 に答える 3

5

この動作は、Zilog(269〜287ページ)によって完全に文書化されています。

一部の周辺機器では、アドレスバスの上位ビットA8..A15を一種の8ビットパラメータとして使用していると思います。

于 2011-12-14T19:06:30.493 に答える
2

一部のシステムでは、上位8ビットをアドレスとして使用し、下位8ビットをパラメータとして使用します。AmstradCPCが主な例です。これにより、OUT(C)、rがほぼ唯一の使用可能な命令になりますが、もちろん実際にはOUT(B)、rとして機能します。Cは、便宜上、パラメーターとしてよく使用されます。当然の結果として、OUT(n)、Aは、0x34をポート0x34などに送信したい場合を除いて、ほぼ完全に役に立たなくなります。

于 2012-12-20T11:55:31.083 に答える
0

ZX Spectrumでは、キーボードはポート0xfeから読み取ることによってのみ読み取ることができますが、最上位の8つのアドレス行は5つのキーの8つのグループの1つを選択しています。たとえば、キーQWER、およびTをスキャンする場合、アドレスバスの上位8ビットは0xfbである必要があります。

    ld bc,#fbfe
    in a,(c)        ; reading from port 0xfe while upper 8 address lines are 0xfb

これは、次とまったく同じです。

    ld a,#fb
    in a,(#fe)      ; reading from port 0xfe while upper 8 address lines are 0xfb

80年代の一部のアーケードマシンは、1つの命令で一度に8ビット以上を出力することにより、追加のハードウェアと通信しますout。追加のビットは、上位アドレスラインから読み取られます。

于 2017-08-04T05:21:16.140 に答える