Команды счётчикиКоманды счётчиков используются для упорядоченного увеличения или уменьшения содержимого регистров.
Следует заметить, что рассмотренный нами в вычисляемом переходе регистр PCL – это тоже своеобразный счётчик, но не программный, а аппаратный, тем не менее, значение его регистра можно использовать.
Итак, мы рассмотрим два примера организации счетчиков: первый – конструкция с использованием уже рассмотренных нами команд, а второй – с использованием новых команд.
metka1 MOVLW .1 ; записываем в аккумулятор единицу
ADDWF KLON,F ; увеличиваем (складываем) на единицу
GOTO metka1 ; переход на метку1
Проанализируйте эту конструкцию, она может быть полезна, т.к. увеличивать можно не на единицу, а на любое другое число; уменьшать тоже можно, используя в конструкции команду SUBWF.
В командах счетчиках используют два термина:
– инкрементирование (инкремент), т.е. увеличение регистра на единицу;
– декрементирование (декремент), т.е. уменьшение регистра на единицу.
УВЕЛИЧЕНИЕ НА ЕДИНИЦУ в общем виде выглядит как INCF F,D
УМЕНЬШЕНИЕ НА ЕДИНИЦУ в общем виде выглядит как DECF F,D
INCF CLON,F ; регистр CLON становится равен CLON+1
DECF CLOP,W ; регистр W = CLOP–1 , регистр CLOP не изменился
При выполнении команды инкрементирования (или декрементирования) с указанием сохранения в аккумулятор, исходные значения регистров после завершения выполнения операций не меняются.
Размер регистра равен 255 – прибавим к 255 единицу и что дальше?
Регистр станет равным нулю – это называется ПЕРЕНОСОМ.
А если сложить регистр X равный 250 и регистр Y равный 10?
Регистр станет равным (X+Y)–256 = 4. Это тоже перенос.
А если из регистра равным нулю вычесть единицу?
Регистр станет равным 255 – это называется ЗАЁМ.
А если из регистра Y равным 10 вычесть регистр X равный 250?
Регистр станет равным 256–(X–Y) = 16. Это тоже заём.
Рекомендуем вспомнить школьную арифметику и счет столбиком – похожая аналогия.
|