ADD A, R5 is not an instruction; it is a fragment of assembly language. Assembly language is not machine language. It contains syntax that does not correspond to anything in machine language directly, such as pseudo-operations, alternative register names and such.
Even if some instruction always uses a fixed register as a source or destination operand, or both, those can still appear explicitly in the assembly language syntax.
As for "how can something be a one-byte operation"? You can use as little as one bit to encode a symbol. Take a look at a compression method called Huffman Coding. Huffman coding lets us take an alphabet (or, more generally, a dictionary of some symbols, which are bit strings, or whatever) and assign them to table of variable-length codes, the shortest of which is just one bit!
Not that Huffman coding would commonly be used for instruction sets, but the principle is there: there are ways to use variable bit lengths in order to encode important symbols in less space, at the cost of lengthening the codes for others.
For instance, if you have an 8 byte opcode field, you could reserve, say two bits of it to classify opcodes into four categories. The remaining 6 bits are then category specific. Three of the categories (say) could use the remaining 6 bits to encode various instruction kinds so that, for instance, anything which starts with
10 is some kind of regular opcode. But one of the four categories, say
11, could just stand for "add immediate to accumulator". The remaining six bits (and their 64 possibilities) would encode the value to be added, between 0 and 63. The value 0 (add 0 to accumulator) could serve as a no-op instruction, so that in the assembly language
ADD #0, A and
NOOP could be two spellings for exactly the same bit pattern (bringing us back to earlier points). Or the value 0 could be taken to designate 65, extending the addition range (and so
NOOP would be something else, and
ADD #0, A would be rejected by the assembler as out of range).
Effectively, you could regard this situation as having 64 different "add immediate to accumulator" instruction flavors, with one opcode for each value to be added, or you can regard that as a special two-bit opcode within the opcode byte, with an immediate field.