スタック操作命令

PEA (Push Effective Absolute Address)

オペランドに指定した16bit値をスタックに積みます。
実際には即値をスタックに積んでいるだけですが、文法的にはあたかも実効アドレスを指定するかのような書き方をします。
この命令で変更されうるフラグはありません。

OC 文法 アドレッシングモード バイト数 サイクル
F4 PEA $????
PEA #$????
Absolute
Immediate
3 5 1


1:下側の書き方は実行命令に即した書き方といえるが基本的に使われない。一部のアセンブラ・逆アセンブラはPEA #$????で翻訳する。

PEI (Push Effective Indirect Address)

オペランドで指定したアドレスの内容をスタックに積みます。ステータスフラグにかかわりなく常に16bitの値をスタックに積みます。
この命令で変更されうるフラグはありません。

OC 文法 アドレッシングモード バイト数 サイクル
D4 PEI ($??) Direct Page Indirect 2 6  

PER (Push effective PC Relative Indirect Address)

PCの値にオペランドとして指定した16bit値を足した値をスタックに積みます。ステータスフラグにかかわりなく常に16bitの値をスタックに積みます。
PCの値はPER命令とその2バイトのオペランドのの命令アドレスであることに注意してください。
この命令で変更されうるフラグはありません。

OC 文法 アドレッシングモード バイト数 サイクル
62 PER label PC Relative Long 3 6  

PHA (Push Accumulator on Stack)

Aレジスタの内容をスタックに積みます。
この命令で変更されうるフラグはありません。

OC 文法 アドレッシングモード バイト数 サイクル
48 PHA Stack (Push) 1 3 1


1:16bitモード時は1サイクル追加

PHP (Push Processor Status Register on Stack)

ステータスレジスタの内容をスタックに積みます。
この命令で変更されうるフラグはありません。

OC 文法 アドレッシングモード バイト数 サイクル
08 PHP Stack (Push) 1 3  

PHX (Push Index Register X on Stack)

Xレジスタの内容をスタックに積みます。
この命令で変更されうるフラグはありません。

OC 文法 アドレッシングモード バイト数 サイクル
DA PHX Stack (Push) 1 3 1


1:16bitモード時は1サイクル追加

PHY (Push Index Register Y on Stack)

Yレジスタの内容をスタックに積みます。
この命令で変更されうるフラグはありません。

OC 文法 アドレッシングモード バイト数 サイクル
5A PHY Stack (Push) 1 3 1


1:16bitモード時は1サイクル追加

PLA (Pull Accumulator from Stack)

Aレジスタに値をプルします。
この命令で変更されうるフラグはネガティブフラグとゼロフラグです。

OC 文法 アドレッシングモード バイト数 サイクル
68 PLA Stack (Pull) 1 4 1


1:16bitモード時は1サイクル追加

PLP (Pull Processor Status Register from Stack)

Pレジスタに値をプルします。
この命令で変更されうるフラグはすべてです。

OC 文法 アドレッシングモード バイト数 サイクル
28 PLP Stack (Pull) 1 4  

PLX (Pull Index Register X from Stack)

Xレジスタに値をプルします。
この命令で変更されうるフラグはネガティブフラグとゼロフラグです。

OC 文法 アドレッシングモード バイト数 サイクル
FA PLX Stack (Pull) 1 4 1


1:16bitモード時は1サイクル追加

PLY (Pull Index Register Y from Stack)

Yレジスタに値をプルします。
この命令で変更されうるフラグはネガティブフラグとゼロフラグです。

OC 文法 アドレッシングモード バイト数 サイクル
7A PLY Stack (Pull) 1 4 1


1:16bitモード時は1サイクル追加

PHB (Push Data Bank Register on Stack)

DBレジスタの値をスタックに積みます。
この命令で変更されうるフラグはありません。

OC 文法 アドレッシングモード バイト数 サイクル
8B PHB Stack (Push) 1 3  

PHD (Push Direct Page Register on Stack)

Dレジスタの値をスタックに積みます。
この命令で変更されうるフラグはありません。

OC 文法 アドレッシングモード バイト数 サイクル
0B PHD Stack (Push) 1 4  

PHK (Push Program Bank Register on Stack)

PBレジスタの値をスタックに積みます。
この命令で変更されうるフラグはありません。

OC 文法 アドレッシングモード バイト数 サイクル
4B PHK Stack (Push) 1 3  

PLB (Pull Data Bank Register from Stack)

DBレジスタに値をプルします。
この命令で変更されうるフラグはネガティブフラグとゼロフラグです。

OC 文法 アドレッシングモード バイト数 サイクル
AB PLB Stack (Pull) 1 4  

PLD (Pull Direct Page Register from Stack)

Dレジスタに値をプルします。
この命令で変更されうるフラグはネガティブフラグとゼロフラグです。

OC 文法 アドレッシングモード バイト数 サイクル
2B PLD Stack (Pull) 1 5