MOV 命令 (Byte Move)
レジスタやメモリの間で8ビットのデータをやり取りします。
レジスタへの代入、メモリへの書込、レジスタ間の転送はすべてMOV命令によって処理されますが、実行内容ごとに慣用構文があります。

MOVオーバーロード
オペコード 構文 アドレッシングモード バイト数 命令サイクル
E8
MOV A, #imm
LDA #const
Immediate to Accumulator
2
2
 
E6
MOV A, (X)
LDA (X)
Indirect to Accumulator
1
3
 
BF
MOV A, (X)+
LDA (X)+
Indirect Auto-Increment to Accumulator
1
4
 
E4
MOV A, dp
LDA dp
Direct Page to Accumulator
2
3
 
F4
MOV A, dp+X
LDA dp, X
Direct Page X-Indexed to Accumulator
2
4
 
E5
MOV A, !abs
LDA abs
Absolute to Accumulator
3
4
 
F5
MOV A, !abs+X
LDA abs, X
Absolute X-Indexed to Accumulator
3
5
 
F6
MOV A, !abs+Y
LDA abs, Y
Absolute Y-Indexed to Accumulator
3
5
 
E7
MOV A, (dp+X)
LDA (dp, X)
Direct Page X-Indexed Indirect to Accumulator
2
6
 
F7
MOV A (dp)+Y
LDA (dp), Y
Direct Page Indirect Y-Indexed to Accumulator
2
6
 
CD
MOV X, #imm
LDX #const
Immediate to X-Index Register
2
2
 
F8
MOV X, dp
LDX dp
Direct Page to X-Index Register
2
3
 
F9
MOV X, dp+Y
LDX dp, Y
Direct Page Y-Indexed to X-Index Register
2
4
 
E9
MOV X, !abs
LDX abs
Absolute to X-Index Register
3
4
 
8D
MOV Y, #imm
LDY #const
Immediate toY-Index Register
2
2
 
EB
MOV Y, dp
LDY dp
Direct Page to Y-Index Register
2
3
 
FB
MOV Y, dp+X
LDY dp, X
Direct Page X-Indexed to Y-Index Register
2
4
 
EC
MOV Y, !abs
LDY abs
Absolute to Y-Index Register
3
4
 
C6
MOV (X), A
STA (X)
Accumulator to Indirect Memory
1
4
1
AF
MOV (X)+, A
STA (X)+
Accumulator to Indirect Auto-Increment Memory
1
4
1
C4
MOV dp, A
STA dp
Accumulator to Direct Page Memory
2
4
1
D4
MOV dp+X, A
STA dp, X
Accumulator to Direct Page X-Indexed Memory
2
5
1
C5
MOV !abs, A
STA abs
Accumulator to Absolute Memory
3
5
1
D5
MOV !abs+X, A
STA abs, X
Accumulator to Absolute X-Indexed Memory
3
6
1
D6
MOV !abs+Y, A
STA abs, Y
Accumulator to Absolute Y-Indexed Memory
3
6
1
C7
MOV (dp+X), A
STA (dp, X)
Accumulator to Direct Page X-Indexed Indirect Memory
2
7
1
D7
MOV (dp)+Y, A
STA (dp), Y
Accumulator to Direct Page Indirect Y-Indexed Memory
2
7
1
D8
MOV dp, X
STX dp
X-Index Register to Direct Page Memory
2
4
1
D9
MOV dp+Y, X
STX dp, Y
X-Index Register to Direct Page Y-Indexed Memory
2
5
1
C9
MOV !abs, X
STX abs
X-Index Register to Absolute Memory
3
5
1
CB
MOV dp, Y
STY dp
Y-Index Register to Direct Page Memory
2
4
1
BB
MOV dp+X, Y
STY dp, X
Y-Index Register to Direct Page X-Indexed Memory
2
5
1
CC
MOV !abs, Y
STY abs
Y-Index Register to Absolute Memory
3
5
1
7D
MOV A, X
TXA
X-Index Register to Accumulator
1
2
DD
MOV A, Y
TYA
Y-Index Register to Accumulator
1
2
 
5D
MOV X, A
TAX
Accumulator to X-Index Register
1
2
 
FD
MOV Y, A
TAY
Accumulator to Y-Index Register
1
2
 
9D
MOV X, SP
TSX
Stack Pointer to X-Index Register
1
2
 
BD
MOV SP, X
TXS
X-Index Register to Stack Pointer
1
2
1
FA
MOV dp, dp
Direct Page to Direct Page
3
5
1
8F
MOV dp, #const
Immediate to Direct Page
3
5
1


1. これらの命令はステータスフラグを変更しない。
 
フラグ変化
n-----z-

n: 読込んだ値のMSBが格納される。
z: 読込んだ値が0の場合にセットされ、それ以外の場合はクリアされる。

注: メモリに対する書込の場合はステータスフラグは変更されない。

解説
MOV命令はオペコードによって指定されたアドレッシングモードに従って1バイトのデータ転送を行います。
第1オペランドに指定されたレジスタまたはメモリがデータの転送先に、第2オペランドに指定されたレジスタまたはメモリがデータの転送元になります。
たとえば、MOV A, ?? はアキュムレータへのデータの読込となります。これは LDA ?? と簡略化して書くことができます。そのほかのデータ転送も同様です。

参照