(適当な)PC-8201のプログラミング

8080命令表

レジスタ

16bit 備考
8bit 8bit
A F
B C
D E
H L M
SP(スタックポインタ)
PC(プログラムカウンタ)

F(フラグ)

bit位置 フラグ 名称 備考
7 S サインフラグ 計算結果がマイナスの時セット
6 Z ゼロフラグ 計算結果がゼロの時にセット
5 -
4 H ハーフキャリィフラグ
3 -
2 P パリティ/オーバーフローフラグ
1 -
0 C キャリーフラグ 計算結果がオーバーフローした場合セット

表記について

転送命令

MOV r1,r2

r2の内容をr1へ転送

MOV r,M

Mで示されるメモリの内容をrに転送

MOV M,r

rの内容をMで示されるメモリに転送

LDAX B

BCレジスタで示されるメモリの内容をAに転送

LDAX D

DEレジスタで示されるメモリの内容をAに転送

LDA nn

2バイトデータnnで示されるメモリの内容をAに転送
(1234番地:LDA 3412)

STAX B

Aの内容をBCレジスタで示されるメモリに転送

STAX D

Aの内容をDEレジスタで示されるメモリに転送

STA nn

Aの内容を2バイトデータnnで示されるメモリに転送
(1234番地:STA 3412)

LXI B,nn

16bitのデータnnをペアレジスタBCに転送
(nn:1234:LXI B,3412)

LXI D,nn

16bitのデータnnをペアレジスタDEに転送
(nn:1234:LXI D,3412)

LXI H,nn

16bitのデータnnをペアレジスタHLに転送
(nn:1234:LXI H,3412)

LXI SP,nn

16bitのデータnnをSP(スタックポインタ)に転送
(nn:1234:LXI SP,3412)

LHLD nn

nnで示されるメモリの内容をLへ、nn+1番地のメモリの内容をHに転送

SHLD nn

Lの内容をnnで示されるメモリへ、Hの内容をnn+1番地のメモリへ転送

SPHL

HLの内容をSPに転送

PUSH B /POP B

BCの内容をスタックに転送

PUSH D /POP D

DEの内容をスタックに転送

PUSH H /POP H

HLの内容をスタックに転送

PUSH PSW /POP PSW

A(アキュームレータ)とF(フラグレジスタ)の内容をスタックへ転送

交換命令

XCHG

DEとHLの内容を交換

XTHL

スタックのトップにあるデータ(2バイト)とHLの内容を交換
(LとSP、HとSP+1の内容を交換)

8bit演算命令

ADD r /SUB r

Aにrを加算し、結果をAに入れる

ADI n /SUI n

Aにnを加算し、結果をAに入れる

ADD M /SUB M

AとHLで示されるメモリの内容を加算し、結果をAに入れる

ADC r /SBB r

AにレジスタrとキャリーフラグCを加算し、結果をAに入れる

ACI n /SBI n

AにnとキャリーフラグCを加算し、結果をAに入れる

ADC M /SBB M

AとHLで示されるメモリの内容とキャリーフラグCを加算し、結果をAに入れる

INR r /DCR r

レジスタrの内容を+1

INR M /DCR M

HLで示されるメモリの内容を+1

16bit演算命令

DAD B

HLの内容とBCの内容を加算し、結果をHLに入れる

DAD D

HLの内容とDEの内容を加算し、結果をHLに入れる

DAD H

HLの内容を2倍にする

DAD SP

HLとSPとを加算し、結果をHLに入れる

INX B /DCX B

BCの内容を+1(フラグは変化しない)

INX D /DCX D

DEの内容を+1(フラグは変化しない)

INX H /DCX H

HLの内容を+1(フラグは変化しない)

INX SP /DCX SP

SPの内容を+1(フラグは変化しない)

比較演算

ANA r

Aとレジスタrとの論理積(AND)をとって結果をAに入れる

ANI n

Aとnとの論理積(AND)をとって結果をAに入れる

ANA M

AとHLで示されるメモリの内容との論理積(AND)をとって結果をAに入れる

ORA r

Aとレジスタrとの論理和(OR)をとって結果をAに入れる

ORI n

Aとnとの論理和(OR)をとって結果をAに入れる

ORA M

AとHLで示されるメモリの内容との論理和(OR)をとって結果をAに入れる

XRA r

Aとレジスタrとの排他的論理和(ExclusiveOR)をとって結果をAに入れる

XRI n

Aとnとの排他的論理和(ExclusiveOR)をとって結果をAに入れる

XRA M

AとHLで示されるメモリの内容と排他的論理和(ExclusiveOR)をとって結果をAに入れる

CMA

Aの内容をbit反転する(#%11111111→#%00000000)

CMP r

Aとrとを比較
A−rを計算しその結果をフラグによって示す

CPI n

Aとnとを比較

CMP M

AとMとを比較

回転・シフト命令

RLC /RRC

Aレジスタの内容を1bit左にシフトし、bit7のデータをbit0に入れると共にキャリーCにも入れる

RAL /RAR

キャリーを含め9bitのデータを左に1bit回転させる

ジャンプ命令

JMP nn

16bitのデータnnで示されるアドレスにジャンプ

JNZ nn /JZ nn

Zフラグがセットされていなければ、nnで示されるアドレスにジャンプ

JNC nn /JC nn

Cフラグがセットされていなければ、nnで示されるアドレスにジャンプ

JPO nn /JPE nn

Pフラグがセットされていなければ、nnで示されるアドレスにジャンプ

JP nn /JM nn

Sフラグがセットされていなければ、nnで示されるアドレスにジャンプ

PCHL

ペアレジスタHLの内容をプログラムカウンタPCにロード
つまりHLで示されるアドレスへジャンプ

コール、リターン命令

CALL nn

nnで示されるアドレスからはじまるサブルーチンをコール

CNZ nn /CZ nn

Zフラグがセットされていなければ、nnで示されるアドレスからはじまるサブルーチンをコール

CNC nn /CC nn

Cフラグがセットされていなければ、nnで示されるアドレスからはじまるサブルーチンをコール

CPO nn /CPE nn

Pフラグがセットされていなければ、nnで示されるアドレスからはじまるサブルーチンをコール

CP nn /CM nn

Sフラグがセットされていなければ、nnで示されるアドレスからはじまるサブルーチンをコール

RET

スタックのトップに退避されていたアドレスデータをPCに入れ、そのアドレスにリターン

RNZ /RZ

Zフラグがセットされていなければリターン

RNC /RC

Cフラグがセットされていなければリターン

RPO /RPE

Pフラグがセットされていなければリターン

RR /RM

Sフラグがセットされていなければリターン

入出力命令

IN n

nで指定されるアドレスのI/OデバイスからデータをアキュムレータAに入力

OUT n

nで指定されるアドレスのI/OデバイスからデータをアキュムレータAに出力

その他

CMC

キャリーフラグCを反転

STC

キャリーフラグCをセット

NOP

何も実行しないで次の命令に進む

HLT

割込かリセットがかかるまでCPUの実行を停止

DI

割込を禁止
DI命令の実行後はINT信号が入力されても新たな割込は発生しない

EI

EI命令が実行されると、その次の命令の実行後から割込が受け付け可能状態になる