
- •СведенИя о процессоре pic16. Система команд Архитектура процессоров семейства pic16
- •Распределение областей памяти процессоров pic16
- •Система команд процессоров pic16
- •Программирование на Ассемблере
- •Синтаксис числовых значений в различных системах счисления
- •Практическая часть Процесс подготовки программ для процессоров pic16 Методические указания
- •Ход работы
- •Лабораторная работа № 1
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 2.
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 3.
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 4
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 5
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 6
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 7
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 8
- •Теоретические сведения
- •Ход работы
- •Список литературы
Ход работы
Составить программу заполнения массива из AA однобайтовых чисел, смещенного от начала рабочей области памяти на BB ячеек, числами СС, и вычисления контрольной однобайтовой суммы элементов массива (AА, BВ, СС – номера первых трех букв фамилии, преобразованных в шестнадцатеричные числа);
Рассчитать ожидаемые результаты.
Выполнить компиляцию и проверку работы программы. Сопоставить результаты с ожидаемыми и сделать соответствующие выводы.
Оформить протокол работы, включающий в себя исходные численные данные, а также таблицу с текстом программы с собственными данными и численные значения переменных после выполнения программы.
Контрольные вопросы.
Принцип создания массивов на ассемблере.
Как реализуется косвенная адресация.
Правила использования регистров INDF и FSR.
Как осуществить копирование массива с одной страницы памяти на другую.
Лабораторная работа № 6
Тема работы: «Изучение команд сдвига»
Теоретические сведения
В системе команд процессоров PIC-16 представлены только две операции сдвига – влево и вправо с участием признака переноса С.
1. RLF File, d (Rotate Left File)
2.RRF File, d (Rotate Right File)
С помощью команд сдвига иногда можно оптимизировать фрагменты программ, выполняющих умножение переменной на константу. Для реализации этого, константу предварительно преобразуют в двоичное число с заданной точностью представления дробной части. По полученному двоичному числу формируют программу из сочетания команд сдвига и сложения.
Пример. Реализовать процедуру умножения y = 2,5x, где х и у – однобайтовые числа.
LIST p=16f77
INCLUDE p16f77.inc
#DEFINE JNC BTFSC STATUS, C
CBLOCK 0x20
c_x
c_y
c_tmp
ENDC
m_1 ; у = 2,5х = 2х + х/2
ADDLW 0x00 ; C = 0
RLF c_x ; 2x -> (W)
MOVWF c_y ; 2x -> (c_y)
m_2 ADDLW 0 ; C = 0
RRF c_x,w ; x/2 -> (w)
ADDWF c_y, f ; 2,5x -> (c_y)
NOP
END
Команды сдвига используют также в процедурах поочередной побитовой обработки данных и в программах умножения и деления. В последнем случае необходимо учитывать участие в операции сдвига признака переполнения С (Carry). При С=0, сдвиг вправо эквивалентен делению числа на 2, причем дробная часть результата попадает в С, сдвиг влево эквивалентен умножению числа на 2 и переполнение попадает в С. Участие С в этих операциях позволяет легко обрабатывать многобайтовые числа.
Деление на 2
Вторая операция RLF Первая операция RLF
Умножение на 2
Первая операция RRF Вторая операция RRF
Ход работы
Составить программу умножения однобайтового числа AA на коэффициент 3,25 для четного AA или 2,75 для нечетного AA, и умножения двухбайтового числа BBCC на 2,25 для нечетного СС или 4,5 для четного СС (AА, BВ, СС – номера первых трех букв фамилии);
Рассчитать ожидаемые результаты.
Выполнить компиляцию и проверку работы программы. Сопоставить результаты с ожидаемыми и сделать соответствующие выводы.
Оформить протокол работы, включающий в себя исходные численные данные, а также таблицу с текстом программы с собственными данными и численные значения переменных после выполнения программы.
Контрольные вопросы.
Как работают команды сдвига RRF и RLF.
Каковы особенности использования команд сдвига при реализации арифметических операций умножения и деления для однобайтовых чисел.
Каковы особенности использования команд сдвига при реализации арифметических операций умножения и деления для многобайтовых чисел.