Instructions are often "sprinkled" in a seemingly random fashion.
I have found a convenient convention/guidance :
- NOP is encoded with all-0s => easier to spot in a debug hex dump.
- INV (invalid) is with all-1s => this traps the core if it executes unprogrammed (E)EPROM.
It's totally arbitrary and INV is also found as all-0s to catch executing uninitialised RAM.
NOP is also often a special case for some instruction combination. But it's good to give the opcodes special values to ease decoding and extensions. NOP and INV can be pools of unused opcodes for later revisions.