戻る

Z8000

Zilog Z8000
Data (8〜64)/16bit / Address Bus 16(24)bit
Cycle 4.0MHz〜10.0MHz
(1979)

「Z8000」は「セグメント」の対応によって2つに分かれる。
セグメント対応の「Z8001」と非対応の「Z8002」である。
当然、メモリアクセスに関する部分の違いがある。
「Z8001」がセグメント対応のため48pinで、「Z8002」は40pinとなっている。

●Z8000(Z8002)のピン配列

AD91 40AD0
AD102 39AD8
AD113 38AD7
AD124 37AD6
AD135 36AD4
STOP6 35AD5
MI7 34AD3
AD158 33AD2
AD149 32AD1
Vcc10 31Vss
VI11 30CLK
NUI12 29AS
NMI13 28N.C.
RESET14 27B/W
MO15 26N/S
MREQ16 25R/W
DS17 24BUSACK
ST318 23WAIT
ST219 22BUSREQ
ST120 21ST0

●Z8000の特徴

レジスタセットは16bitで以下の構成となっている。
ただし、セグメントに対応するため「Z8001」では「PC」「PSAR」は32bitである。
「R14'」「R14」は「Z8001」ではセグメント対応「SP」(Stack Pointer)である。
(「Z8002」では汎用レジスタ)
「R15'」「R15」は「SP」である。
(「R15'」はシステム用、「R15」は通常)

RQ0RR0R0RH0(上位8bit)RL0(下位8bit)
R1RH1RL1
RR2R2RH2RL2
R3RH3RL3
RQ4RR4R4RH4RL4
R5RH5RL5
RR6R6RH6RL6
R7RH7RL7
RQ8RR8R8
R9
RR10R10
R11
RQ12RR12R12
R13
RR14R14'
R14
R15'
R15
以下、特殊レジスタ
Reserved(Z8001 only)
Flag&Control
Program Status Register(PSR=PC)
Program Status Area Pointer(PSAR)
Refresh Counter(RC)

フラグの内容は以下となっている。
(未使用領域は0)

14S/NSystem/NormalSystemモード時、成立
13EPAExtended Processor Architectyre拡張プロセッサユニット装着時、成立
12VIEVectored Interrupt Enableベクタ割込許可時、成立
11NVIENonVectored Interrupt Enableノンベクタ割込許可時、成立
7CCarryMSB<(Most Significant Bit:最上位bit)への桁の繰り上がり(Carry)もしくは桁の繰り下がり(Borrow)発生時、成立
6ZZero=0
5SSign負数時、成立
4P/VParity/Overflow論理演算時は偶数Parity時、算術演算時はOverflow発生時、成立
3DADecimal AdjustDAB命令実行時、成立
2HHalf Carry算術演算のbit間(Half)でCarryもしくはBorrow発生時、成立

アドレッシングモードは以下となっている。

Rレジスタ
I即値(イミディエイト)
IRレジスタ間接
DA直接アドレス
Xインデックス
RA相対アドレス
BAベースアドレス
BXベースインデックス

●Z8000の命令

命令(ニーモニック)は以下の構成となっている。

  ニーモニック [DEST[,SRC[,OP3[,OP4]]]]

一般的にOP2個で「DEST」←「SRC」となる。
例外として比較命令(CPxx)は条件を持つため、「CPI DEST,SRC,R,cc」というような構成になる。
「cc」は以下の通りである。

F常にFalse
T常にTrue
NZZ=0(≠0)
ZZ=1(=0)
PLS=0(正数)
MIS=1(負数)
NC/UGEC=0(Carryなし/≧:Unsigned)
C/ULTC=1(Carry発生/<:Unsigned))
UGTCとZの論理積=0(>:Unsigned)
ULECとZの論理和=1(≦:Unsigned))
GESとVの排他的論理和=0(≧:Signed)
LTSとVの排他的論理和=1(<:Signed))
GTSとVの排他的論理和とZの論理和=0(>:Signed)
LESとVの排他的論理和とZの論理和=1(≦:Signed)
POP=0(奇数Parity)
PEP=1(偶数Parity)
OVV=0(Overflowなし)
NOVV=1(Overflow発生)

●データ転送命令

ニーモニックIRDARABABX備考
LDBWLOOOOO OOレジスタをロード(読込)
LDBWL OOO OOメモリへストア(格納)
LDBW OOO 即値をメモリへストア
LDKW O 即値をロード
LDAW OO OOアドレスをロード
LDARW O 相対アドレスをロード
LDRBWL O 相対アドレスでデータをロード
LDRBWL O 相対アドレスでデータをストア
LDMW OOO 複数レジスタをロード(LDM DEST,@SRC,n)
LDMW OOO 複数アドレスへストア(LDM DEST,@SRC,n)
CLRBWO OOO クリア
EXBWO OOO 交換
PUSHWLOOOOO プッシュ
POPWLO OOO ポップ

●算術演算命令

ニーモニックIRDARABABX備考
INCBWO OOO インクリメント(+1)
DECBWO OOO デクリメント(-1)
ADDBWLOOOOO 加算
ADCBWO 加算(Carry)
SUBBWLOOOOO 減算
SBCBWO 減算(Carry)
MULTWLOOOOO 乗算
DIVWLOOOOO 除算(上位:商、下位:剰余)
NEGBWO OOO 否定
EXTSBWLO 符号拡張
DABBO BCD(Binary-Coded Decimal:二進化十進)補正
CPBW OOO 比較(I)
CPBWLOOOOO 比較(R)

●論理演算命令

ニーモニックIRDARABABX備考
ANDBWOOOOO 論理積
ORBWOOOOO 論理和
XORBWOOOOO 排他的論理和
COMBWO OOO 反転
TESTBWLO OOO テスト
TCCBWO 条件テスト(OP1にtを指定し、成立した場合はOP2のRのbit0に1をセット)

●シフト命令

ニーモニックIRDARABABX備考
RLBWO 左ローテーション
RLCBWO 左ローテーション(Carry付き)
RLDBBO 左ローテーション(4bit単位)
RRBWO 右ローテーション
RRCBWO 右ローテーション(Carry付き)
RRDBBO 右ローテーション(4bit単位)
SDABWLO 算術シフト(Dynamic)
SDLBWLO 論理シフト(Dynamic)
SLABWLO 左算術シフト
SLLBWLO 左論理シフト
SRABWLO 右算術シフト
SRLBWLO 右論理シフト

●ビット操作命令

ニーモニックIRDARABABX備考
BITBWO OOO bitテスト(Static)
BITBWO bitテスト(Dynamic)
TSETBWO OOO bitテスト&セット
RESBWO OOO bitリセット(Static)
RESBWO bitリセット(Dynamic)
SETBWO OOO bitセット(Static)
SETBWO bitセット(Dynamic)

●ストリング操作命令

ニーモニックIRDARABABX備考
LDIBW O ロード(インクリメント)
LDIRBW O 繰返ロード(インクリメント:R→リピート数)
LDDBW O ロード(デクリメント)
LDDRBW O 繰返ロード(デクリメント:R→リピート数)
TRIBB O 転送(インクリメント)
TRIRBB O 繰返転送(インクリメント:R→リピート数)
TRDBB O 転送(デクリメント)
TRDRBB O 繰返転送(デクリメント:R→リピート数)
TRTIBB O 転送&テスト(インクリメント)
TRTIRBB O 繰返転送&テスト(インクリメント:R→リピート数)
TRTDBB O 転送&テスト(デクリメント)
TRTDRBB O 繰返転送&テスト(デクリメント:R→リピート数)
CPIBW O 比較(インクリメント)
CPIRBW O 繰返比較(インクリメント:R→リピート数)
CPSIBW O ストリング比較(インクリメント)
CPSDIBW O ストリング繰返比較(インクリメント:R→リピート数)
CPDBW O 比較(デクリメント)
CPDRBW O 繰返比較(デクリメント:R→リピート数)
CPSDBW O ストリング比較(デクリメント)
CPSDRBW O ストリング繰返比較(デクリメント:R→リピート数)

●ブロック転送命令

ニーモニックIRDARABABX備考
IN OO 入力
INI O 入力(インクリメント)
INIR O 繰返入力(インクリメント)
IND O 入力(デクリメント)
INDR O 繰返入力(デクリメント)
OUT OO 出力
OUTI O 出力(インクリメント)
OUTIR O 繰返出力(インクリメント)
OUTD O 出力(デクリメント)
OUTDR O 繰返出力(デクリメント)
SIN OO 特殊入力
SINI O 特殊入力(インクリメント)
SINIR O 繰返特殊入力(インクリメント)
SIND O 特殊入力(デクリメント)
SINDR O 繰返特殊入力(デクリメント)
SOUT OO 特殊出力
SOUTI O 特殊出力(インクリメント)
SOUTIR O 繰返特殊出力(インクリメント)
SOUTD O 特殊出力(デクリメント)
SOUTDR O 繰返特殊出力(デクリメント)

●プログラム制御命令

ニーモニックIRDARABABX備考
JP OOO ジャンプ
JR O 相対ジャンプ
CALL OOO サブルーチンコール
CALR O 相対サブルーチンコール
DJNZW O 16bit相対繰返ジャンプ(Rn:カウンタ)
DBJNZB O 8bit相対繰返ジャンプ(Rn:カウンタ)
RET サブルーチンリターン
IRET 割込処理リターン
SC O システムコール

●CPU制御命令

ニーモニックIRDARABABX備考
NOP 何もしない
HALT HALT状態(割込待ち)
DI 割込禁止
EI 割込許可
RESFLG フラグリセット
SETFLG フラグセット
COMFLG フラグ反転
LDCTLBWO R→CR
LDCTLBWO CR→R
LDPS OOO PSRロード
MBIT マルチプロセッサ同期用入力端子(MI*)の状態テスト
MRES マルチプロセッサ同期用出力端子(MO*)のリセット
MRES MO*のセット
MREQ O MI*とMO*のタイマアウト付きセマフォ動作

[TOPに戻る]