Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPSS Lab.rab.(ru) 2011-07-16 EP.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.79 Mб
Скачать

Ход работы

  1. Составить программу заполнения массива из AA однобайтовых чисел, смещенного от начала рабочей области памяти на BB ячеек, числами СС, и вычисления контрольной однобайтовой суммы элементов массива (AА, BВ, СС – номера первых трех букв фамилии, преобразованных в шестнадцатеричные числа);

  2. Рассчитать ожидаемые результаты.

  3. Выполнить компиляцию и проверку работы программы. Сопоставить результаты с ожидаемыми и сделать соответствующие выводы.

  4. Оформить протокол работы, включающий в себя исходные численные данные, а также таблицу с текстом программы с собственными данными и численные значения переменных после выполнения программы.

Контрольные вопросы.

  1. Принцип создания массивов на ассемблере.

  2. Как реализуется косвенная адресация.

  3. Правила использования регистров INDF и FSR.

  4. Как осуществить копирование массива с одной страницы памяти на другую.

Лабораторная работа № 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В, СС – номера первых трех букв фамилии);

  1. Рассчитать ожидаемые результаты.

  2. Выполнить компиляцию и проверку работы программы. Сопоставить результаты с ожидаемыми и сделать соответствующие выводы.

  3. Оформить протокол работы, включающий в себя исходные численные данные, а также таблицу с текстом программы с собственными данными и численные значения переменных после выполнения программы.

Контрольные вопросы.

        1. Как работают команды сдвига RRF и RLF.

        2. Каковы особенности использования команд сдвига при реализации арифметических операций умножения и деления для однобайтовых чисел.

        3. Каковы особенности использования команд сдвига при реализации арифметических операций умножения и деления для многобайтовых чисел.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]