■ ニーモニック⇔機械語対照表(その3)

 今回の対照表は、ビット間のローテイト/シフトに関する命令とCPUの分岐について。まったく内容の異なる命令群を紹介しているが、これは単に分類の順番とスペース的なもので他意はない。
 どちらかというと、ローテイト/シフト命令の役割は算術演算に近いものがあり、レジスタ値を倍にしたり半分にしたりする際によく利用される。このとき、キャリーフラグが非常に重要な役割を果たすことになるのだが、それを条件分岐の条件として活用することも少なくない。
 興味深いのは、ローテイト/シフト命令自体はキャリーフラグしか利用対象としていないにもかかわらず、実行によりほぼ全フラグが相応の変化を伴うということ。フラグの主たる利用先が条件分岐であることを思えば、今回の組み合わせもあながち無関係なものではない……という見方もできる。
 このあたり、いかようにでもこじつけられるのがマシン語のマシン語たる所以であり、組み合わせの言語である証拠ともいえる……のだが、たとえロ−テイト/シフト命令で全フラグが変化しても、実際に条件分岐に応用されるのは99%がキャリーフラグ。すなわち、今回の前口上は2つの命令群を結びつけるための、実に明快な駄文といえるだろう。。。お許しあれ。。。

ニーモニック⇔機械語対照表(その3)
 n :8ビットの数値
 nn:16ビットの数値
 d :8ビットの数値
 e :相対アドレシングの変位置
 x :上部に並んでいるレジスタ名や条件を示す

ローテイト/シフト
x→
A
B
C
D
E
H
L
(HL)
(IX+d)
(IY+d)
RLCA
07
 
 
 
 
 
 
 
 
 
RRCA
0F
 
 
 
 
 
 
 
 
 
RLA
17
 
 
 
 
 
 
 
 
 
RRA
1F
 
 
 
 
 
 
 
 
 
RLC x
CB
07
CB
00
CB
01
CB
02
CB
03
CB
04
CB
05
CB
06
DD
CB
d
06
FD
CB
d
06
RRC x
CB
0F
CB
08
CB
09
CB
0A
CB
0B
CB
0C
CB
0D
CB
0E
DD
CB
d
0E
FD
CB
d
0E
RL x
CB
17
CB
10
CB
11
CB
12
CB
13
CB
14
CB
15
CB
16
DD
CB
d
16
FD
CB
d
16
RR x
CB
1F
CB
18
CB
19
CB
1A
CB
1B
CB
1C
CB
1D
CB
1E
DD
CB
d
1E
FD
CB
d
1E
SLA x
CB
27
CB
20
CB
21
CB
22
CB
23
CB
24
CB
25
CB
26
DD
CB
d
26
FD
CB
d
26
SRA x
CB
2F
CB
28
CB
29
CB
2A
CB
2B
CB
2C
CB
2D
CB
2E
DD
CB
d
2E
FD
CB
d
2E
SRL x
CB
3F
CB
38
CB
39
CB
3A
CB
3B
CB
3C
CB
3D
CB
3E
DD
CB
d
3E
FD
CB
d
3E
RLD
 
 
 
 
 
 
 
ED
6F
 
 
RRD
 
 
 
 
 
 
 
ED
67
 
 

ジャンプ/コール/リターン
x→
無条件
C
NC
Z
NZ
PE
PO
M
P
ループ
JP x,nn
C3
n
n
DA
n
n
D2
n
n
CA
n
n
C2
n
n
EA
n
n
E2
n
n
FA
n
n
F2
n
n
 
JR x,e
18
e-2
38
e-2
30
e-2
28
e-2
20
e-2
 
 
 
 
 
JP (HL)
E9
 
 
 
 
 
 
 
 
 
JP (IX)
DD
E9
 
 
 
 
 
 
 
 
 
JP (IY)
FD
E9
 
 
 
 
 
 
 
 
 
CALL x,nn
CD
n
n
DC
n
n
D4
n
n
CC
n
n
C4
n
n
EC
n
n
E4
n
n
FC
n
n
F4
n
n
 
DJNZ e
 
 
 
 
 
 
 
 
 
10
e-2
RET x
C9
D8
D0
C8
C0
E8
E0 
F8
F0
 
RETI
ED
4D
 
 
 
 
 
 
 
 
 
RETN
ED
45
 
 
 
 
 
 
 
 
 

リスタート
RST 00H
C7
RST 08H
CF
RST 10H
D7
RST 18H
DF
RST 20H
E7
RST 28H
EF
RST 30H
F7
RST 38H
FF