You don't need any instruction that can be built from other instructions.
So, no need for mul
or div
since you can do that with repeated addition or subtraction, and no need for sub
if you have neg
(negate) and numbers will wrap, such as with two's complement.
And certainly you can get away with two branch instruction, one for equal, one for less than - all the others can be built from combinations of those.
Because you have no I/O instructions, you'll probably need to use memory-mapped I/O where communications with other devices is via memory accesses.
And, without native push
and pop
, you'll probably need to implement your own stack with a dedicated register (and memory location since you don't appear to have a register-to-register move).
Now that won't be a very nice architecture but it should function. As the Matrix Architect stated, "there are levels of survival we are prepared to accept".
As an aside, have a look into the RCA1802 CPU (from days of yore). It had no dedicated program counter or stack pointer, instead implementing all that in software (see here for details).