レジスタ
ここでは、H8/300H シリーズのレジスタの構成と使用法について説明する
レジスタのビット長と使用ビットに対する表記
32ビットの汎用レジスタ8本のどのレジスタの、どのビットをどう指定するか
ビット長 | コード中での表記 | 使用ビット |
---|---|---|
32ビット | er n |
32ビット全体 |
16ビット | e n |
32ビット中の上位16ビット |
16ビット | r n |
32ビット中の下位16ビット |
8ビット | r nh |
下位16ビット中の上位8ビット |
8ビット | r nl |
下位16ビット中の下位8ビット |
n は 0 から 7 までのレジスタの番号で、er7
は push-pop 命令のためのスタックポインタとして使用するため、プログラム中では使用しない。
レジスタの上位16ビットを8ビットずつ分けてアクセスする表記(例:e0l
)は存在しない
上図は汎用レジスタ1本の、重なっている様子を表現したもの。これが8本ある。
注意
e1
や er2
等、表記は多いが、実際のレジスタは8本しかなく、例えば er0
と r0h
は同じレジスタの異なる大きさの範囲を示しているにすぎない。よって、e0
と r0
の組み合わせや r0l
と r0h
と e0
等は同時に使用出来るが、例えば e0
に値が入っているときに er0
に値を代入したとき、もとの e0
の値は失われる。