The sixteen 8-bit registers all have the same structure and can be used without distinguishing
data registers from address registers. They can also be used as eight 16-bit registers. When
used as data registers, the general registers can be used as either 8-bit registers, in which case
they are referred to as upper (H) and lower (L) byte registers, or as 16-bit registers. When used
as address registers, they are used as 16-bit registers. These usages differ depending on the
In addition to its function as a general register, register R7 is also allocated for use as the stack
pointer (SP). It is used implicitly in subroutine calls and exception processing.
Program Counter (PC): The program counter is a 16-bit register that holds the address of the
next instruction to be executed by the H8/300L CPU.
Condition Code Register (CCR): This 8-bit register contains internal status information,
including the carry (C), overflow (V), zero (Z), negative (N), and half-carry (H) flags and the
interrupt mask bit (I). The CCR can be manipulated with the CCR manipulation instructions.
Bit 7 (I):
Interrupt mask bit
This bit masks interrupts when set to 1. It is set to 1 at the start of exception
Bit 6 (U):
This bit can be read and written by user software using the LCD, STC, ANDC,
ORC, and XORC instructions.
Bit 5 (H):
This bit is set to 1 when an ADD.B, ADDX.B, SUB.B, SUBX.B, CMP.B, or
NEG.B causes a carry into or borrow from bit 3, and is cleared to 0 when the
execution of one of those instructions does not cause a carry or borrow. Similarly,
it is set to 1 when an ADD.W, SUB.W, or CMP.W instruction causes a carry into
or borrow from bit 11, and is cleared to 0 when the execution of one of those
instructions does not cause a carry or borrow. It is used implicitly by the DAA and