[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
реализовать ветвление только в случаях, когда значения констант расположены в узком дипазоне, скажем 1.2.3 или 'Z'.'X'.'Y'.'W'. Число констант и их порядок не важны, важно что их значения отличаются на 1. В этом случае Ваш вариант на ассемблере сработает, только после загрузки переменной W, нужно вычесть из него константу с наименьшим значением. Но что будет, если значения констант будут отличаться не на 1, а, скажем. на 5, 10, а то и в несколько раз? Вариант на C я во внимание не принимаю, т.к. компиляторы подобную оптимизацию не производят и код в результате трансляции получается более громоздким, во всяком случае это справедливо для IAR PIC С. Проверял в свое время. Верное решение приведено в другом ответе. Код получается несколько замысловатым, но когда требуется сэкономить пару другую команд или микросекунд, на удобочитаемость кода внимания уже не остается. Спасибо.
E-mail: info@telesys.ru