![]() | |
НПО Системы Безопасности (499)340-94-73 График работы: ПН-ПТ: 10:00-19:00 СБ-ВС: выходной ![]() ![]() |
Главная » Периодика » Безопасность 0 ... 115116117118119120121 ... 159 tfsc STATUS, Z goto no change xorwf ПРОВЕРКА ДИАПАЗОНА Речь идет о коде, который проверяет попадание значения переменной Num в диапазон значений и при положительном ответе переходит к метке in range.
ПРЕОБРАЗОВАНИЕ СИМВОЛОВ ASCII В ВЕРХНИЙ РЕГИСТР Речь идет о практическом использовании предыдущей подпрограммы. ToUpper addlw Addlw btfss addlw addlw return 255 - 2 z - a + 1 STATUS, С h* 20 A Проверка попадания в диапазон значений кодов нижнего регистра Если перенос установлен, то нижний регистр Если переноса нет, восстанавливается символ Добавление А для восстановления символа ПЕРЕСТАНОВКА СОДЕРЖИМОГО РЕГИСТРА И РАБОЧЕГО РЕГИСТРА W Ниже представлен быстрый способ перестановки содержимого регистра и регистра w, не задействуя временный регистр. xorwf Reg, f xorwf Req, w xo rwf Reg, f w = w, Reg = Reg " w w = w "( Reg " w), Reg = Reg w = Reg, Reg = Reg " w w - Reg, Reg = Reg " w " Reg w = Reg w = Reg Если биты отличаются, новый код сохраняется как старый (old) ПЕРЕСТАНОВКА СОДЕРЖИМОГО ДВУХ РЕГИСТРОВ Ниже приведена подпрограмма, позволяющая быстро поменятьмес-тами содержимое двух регистров: movf X, subwf Y, addwf X, subwf Y, w = X = w = (Y (Y X) X) СРАВНЕНИЕ И ПЕРЕСТАНОВКА, ЕСЛИ Y < X Эта подпрограмма удобна для пузырьковой сортировки:
- X) ПОДСЧЕТ ЧИСЛА 1 В БАЙТЕ Код, представленный ниже, является оптимизированным решением классической проблемы подсчетачист 1 в байте {\2коиглщ / 12 циклов). Речь идет о разработке, выполненной Дмитрием Кирашовым (Dmitry Kirashov).
ГЕНЕРАЦИЯ БИТА ЧЕТНОСТИ ДЛЯ БАЙТА В конце программы бит О из регистра X будет иметь значение бита, дополняющего до четности: если сложить все единицы байта и бит паритета, в результате получится четное число. swapf X, W xorwf X, f rrf X, w xorwf X, f btfsc X, 2 incf X f УДЕРЖАНИЕ ПЕРЕМЕННОЙ ВНУТРИ ДИАПАЗОНА Иногда в процессе обработки данных возникает необходимость удержать значения целых чисел внутри диапазона. Четыре команды, приведенные ниже, гарантируют, что переменная Temp будет постоянно находиться в диапазоне от О до значения Constant. movlw Constant , О <= Temp <= Constant subwf Temp, w btfsc STATUS, С subwf Temp, f ПЕРЕСТАНОВКА ЧЕТНЫХ И НЕЧЕТНЫХ БИТОВ Для перемены местами четных и нечетных битов байта можно воспользоваться следующим фрагментом: , © 1998 by Dmitry Kirashov movwf X , Сохранение поступающего байта , во временном регистре W = X = ABCDEFGH andlw 0x55 , w = OBODOFOH addwf X, f , X = ABCDEFGH + OBODOFOH rrf X f , X = (ABCDEFGH + OBODOFOH) >> 1 addwf X, w , w = BADCFEHG + OBODOFOH ПОБИТОВЫЕ ОПЕРАЦИИ Подпрограмма установки бита путем выполнения операции логического И двух других битов имеет следующий вид: 0 ... 115116117118119120121 ... 159 |