Have separate instructions for each register or pass register as argument?
You still need to define what "best" means to you in the context of your overall implementation. You've told us nothing at all about the overall architecture of your "simple" CPU or your design process. How much time have you spent studying the instruction encoding of existing 8-bit processors? Even something as primitive as the 8008 &mdash; note how some instructions can refer to one or two of the eight registers. Or the 6800, which has two data registers like yours does.

But in general terms, a "parameter" ("operand" is a more common term for this) doesn't need to occupy an entire byte. If your CPU has two registers, then most instructions are going to want to refer to one or the other of them. So why not dedicate one bit of the first byte of the instruction to denote which register is to be the source or destination of the operation?