Быстрый 8-битный множитель в сборке

У меня есть MCU в Logisim и следующий код asm. Он работает, но мне нужно его улучшить - сделать быстрее. Как это сделать? Я понимаю, что это зависит от ввода данных. Мои идеи - упорядочить входные операнды. Например, 2*5=5+5 и то же самое 5*2=2+2+2+2+2, поэтому мне нужно сначала сравнить их друг с другом, а затем расположить. Как это сделать? Любые другие идеи.

Вы можете получить мой MCULogisim: Загрузите MCU.circ и установите файл Excel XLS с инструкциями.

Текущее количество команд: COMPARE = ​​4 STORE = 9 END = 10

Машинный код: 3000 3101 2200 2300 1153 6509 0200 0130 5004 4202 500A

Мой код asm:

        LDR R0, 0   //Read first number from the RAM
        LDR R1, 1   //Read second number from the RAM
        LDI R2, 0   //Sets result register to zero
        LDI R3, 0   //Sets R3 (compare) register to zero
COMPARE:CMP R1, R3  //Checks if multiplication isn't already done
        BREQ STORE  //If previous compare numbers were identical, then jumt to STORE
        ADD R2, R0  //If they werent 0, then add first number to result again
        DEC R1      //Decrease second number or counter by 1
        JMP COMPARE //Jump to compare
STORE:  STR R2, 2   //Save result to 2. RAM adress
END:    JMP END     //END

0 ответов

Другие вопросы по тегам