Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на ассемблере для PIC.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
153.09 Кб
Скачать

Вопросы для самопроверки

Надеюсь, что суть усвоена. К этому моменту должны появиться обоснованные вопросы. Если вопросы не появились, то мы их сформулируем. Далее короткие вопросы-ответы для общего развития и стимула познать больше.

Где в МК расположены строчки с командами?

В памяти программ. Пустые строки без команд не в счёт.

Для чего нужны переходы в программе?

Для организации цикличности программы (о цикличности позже).

Регистр-счётчик вмещает 255 значений, а команд может быть больше, например 1024. Как в этом случае работает счётчик?

Реально счётчик двухбайтный, т.е. используется два регистра. PCL (адрес h2) – младший байт и PCLATH (адрес hA) – старший. Можем менять только младший байт и этого нам достаточно; посчитайте в BinHexDec.

Как работать с отрицательными числами и с числами более 255?

Для работы с такими числами задействуются дополнительные регистры.

Сложение и вычитание мы разобрали, а где умножение деление?

Слишком много вопросов – невозможное возможно.

Команды счётчики

Команды счётчиков используются для упорядоченного увеличения или уменьшения содержимого регистров.

Следует заметить, что рассмотренный нами в вычисляемом переходе регистр 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)–255 = 5. Это тоже перенос.

А если из регистра равным нулю вычесть единицу?

Регистр станет равным 255 – это называется ЗАЁМ.

А если из регистра Y равным 10 вычесть регистр X равный 250?

Регистр станет равным 255–(X–Y) = 15. Это тоже заём.

Рекомендуем вспомнить школьную арифметику и счет столбиком – похожая аналогия.