А можешь сформулировать вопрос еще раз, только чтобы не пришлось гадать, о чем речь. А то не понятно, что нужно и что ты сам проделал.
Извиняюсь, что забыл про комментарии, вот пояснения:
MOV R1, P0 ;считываем двоично-десятичное число с порта p0,записываем в регистр R0
MOV A, P1 ;считываем двоично-десятичное число с порта p1, записываем его в аккумулятор
DEC A ; уменьшаем число в А на 1, чтобы при выполнении djnz не умножить лишний раз
MOV R2, A ;уменьшенное число из а заносим в регистр R2
MOV A, R1 ; заносим из R1 в А
M1: ADD A,R1 ;складываем его с самим собой столько раз, сколько указано в регистре R2.
DA A ; в итоге произведение заменяется сложением.
DJNZ R2, M1;
Вообще говоря, преподователь пояснил, что по условию пользователь может ввести на порте P0 число от 0 до 99, на P1 тоже число от 0 до 99. Затем эти числа должны перемножиться (стало быть, результат произведения может быть от 0 до 9801), и этот результат для отображения надо разбить так, чтобы он поместился в портах P2 И P3 в двоично-десятичном виде (то есть, если число 9801, то 98 например отобразится в P2, 01 - В P3). Приведенный выше когд адекватно работает до переполнения аккумулятора, но показывает ерунду, когда вводится числа 0 или 1