На два байта короче.
Да, при использовании в процедуре эмуляции эти команды надо поместить не там, где была команда CLR R3, а после MOV ARG2,R2. Пробовал на отдельной процедуре, поэтому пропустил этот момент.
- - - Добавлено - - -
И тогда получается еще надо добавить команду тестирования R2, в итоге 2 байта обратно. Т.е. при использовании в процедуре эмуляции вариант с inc и dec все же чуть лучше (по скорости). При использовании в отдельной процедуре умножения вариант с mov и xor чуть лучше.
- - - Добавлено - - -
В делении можно чуть сократить операции со знаками.
1. DEC R2 надо заменить на INC R2, как в первой проверке.
2. MOV #240,DIV1 и MOV #5401,DIV1 можно убрать. Вместо MOV #5401,DIV1 надо добавить bis #100000,r2.
3. После POP R0 теперь нужно проверить знак, который покажет, нужно ли поменять знак остатка.
4. Потом asr r0 и во флаге C признак необходимости изменения знака частного.
Пункты 3 и 4 можно поменять местами. Ну и заготовка для команды DIV1: NOP не нужна.
- - - Добавлено - - -
Но лучше не стоит, или придется добавить еще одну команду.



Ответить с цитированием
