Como implementar o MUL usando todas as outras instruções na montagem?

Digamos que eu implementei todas as instruções ADD, AND, SHF, JUMP, BR, LDW, LDB (carregar palavra carregar byte ...) ........, exceto MUL (múltiplas) em uma máquina de montagem. Agora, eu quero escrever um código de montagem para operar uma instrução MUL que recebe os dados armazenados em 0x4000 (a) e 0x4001 (b) (cada um dos 8 bits), calcula o produto e armazena o resultado em 0x4002 (16bits). E queremos minimizar as etapas da instrução.

O que eu posso pensar:

a + a + a + a + ..... a (b vezes) a mais fácil, mas obviamente a pior

Deslocamento à esquerda (a, 7) + deslocamento à esquerda (a, 6) + ..... + a (desloque e adicione de acordo com b)

Quero saber se há uma solução melhor para esta questão. Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion