Implementing multiplication
At minimum, you need a branching instruction which can determine whether the previous addition generated a carry.  Also, performance will be improved enormously if you expand your register set to three or four registers.

Start with one operand in R0 and the other in R1.  Start with R2 zero.

Repeat the following sequence eight times (first ADD may be skipped on first pass)

  Add R2,R2
  Add R0,R0
  Bnc Skip
  Add R2,R1
Skip:


Note that if the instruction set includes an add-with-carry instruction, using it for the second instruction would cause this instruction sequence to yield a 16-bit result in R0:R2.  Further, if R2 starts non-zero, its value times 256 will be added to the outgoing result.