Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа № 2. Маскирование. Суммирование массива
Цель работы: Обучение применения маскирования данных. Создание алгоритма суммирования массива. При маскировании выполняется побитные логические операции исходного числа и маски с целью одновременного изменения нескольких разрядов исходного числа или проверки равенства чисел: - логическая операция AND исходного числа и числа-маски очищает разряд числа в исходном числе, если в соответствующем разряде числа-маски записан 0, и не изменяет его, если в разряде маски записана единица; - логическая операция OR исходного числа и числа-маски устанавливает в разряд исходного числа 1, если в таком же разряде маски будет записана 1, и не изменяет его, если в этом разряде маски записан 0; - логическая операция «исключающее ИЛИ» (XOR) исходного числа и числа-маски инвертирует содержимое бита исходного числа, если в соответствующем разряде числа маски записана 1. И не изменяет его, если в этом разряде маски записан 0. Часто применяется для определения равенства регистра какому-либо числу, записанному в маске. Примеры: инвертирование, не изменяем, равенство. Число 1001 1001 1001 Маска XOR 1111 XOR 0000 XOR 1001 Результат 0110 1001 0000 Примеры результатов маскирования приведены в таблице 2.1.
Т а б л и ц а 2.1 – Результаты маскирования
Циклические структуры организуются с помощью операторов условий совместно с оператором перехода. В предыдущих лабораторных работах мы применяли абсолютную адресацию, при этом адрес регистра записывается непосредственно в инструкцию. В этой лабораторной работе будем применять косвенную адресацию, при которой в инструкцию записывается указатель адреса, который может меняться в процессе выполнения программы. Изучите способы организации программ с косвенной адресацией на примере приведенных ниже фрагментов. Регистр FSR, являющимся просто указателем, хранит адрес ячейки, к которой происходит обращение через имя формально существующего регистра INDF. Задача. В массив записано потребление энергии за четыре месяца. Требуется определить суммарный расход энергии за указанный период и средний расход энергии в месяц.
Фрагменты программы. Применяемые символьные имена регистров показаны на рисунке 2.1. Стандартные операции настройки МК опущены. Заполнение массива. movlw D'2' movwf SHAG MOVLW D'11' MOVWF EL_MAS_0 ADDWF SHAG, W; W= EL_MAS_0+SHAG MOVWF EL_MAS_1 Аналогично заполняются остальные элементы массива. CLRF SUM CLRF IND_EL_MAS MOVLW EL_MAS_0; считываем адрес регистра в аккумулятор. MOVWF FSR; запись в регистр FSR адреса первого регистра. NEXT_ELEM; метка для повторения цикла. MOVF SUM, W; считываем значение регистра SUM в W. ADDWF INDF, W; сложить W и текущий элемент массива. MOVWF SUM; запоминаем новое значение SUM. Подготовка к следующему циклу INCF FSR, F; записываем в FSR адрес следующего регистра массива. INCF IND_EL_MAS, F; фиксируем индекс этого регистра. MOVLW D’4’; количество элементов в массиве. XORWF IND_EL_MAS, W; маскированием проверяем: индекс равен 4. BTFSS STATUS, Z; проверка –четыре элемента просуммировали (Z=1)? GOTO NEXT_ELEM; только при Z =0, повторяем цикл. ; подготовка вычисления среднего значения. MOVF SUM, W; если Z=1, копируем сумму в аккумулятор W. MOVWF SREDNEE; копируем SUM в SREDNEE. ; нахождение среднего значения массива выполните самостоятельно. END Выполните самостоятельно деление на 4 с помощью сдвигов вправо командой RRF регистра SREDNEE для определения среднего значения, см. таблицу 2.3. Не забывайте обнулять бит Carry перед сдвигом. Количество повторений в цикле определяется следующим образом, при каждом повторе цикла, увеличиваем индекс элемента в регистре и проверяем, маскированием равен ли он четырем. Поскольку регистр с индексом 4 будет лишним, выходим из цикла. Блок-схема программы приведена на рисунке 2.2. В ней предполагается, что в массив данные занесены. Используя приведенный фрагмент, подготовьте программу по варианту из таблицы 2.4, выполняющую нахождение среднего указанных регистров. Результаты занесите в таблицу 2.3. Т а б л и ц а 2.3– Сумма массива и среднее массива
Т а б л и ц а 2.4 – Варианты заданий
Контрольные вопросы 1 Какие биты Status меняют свои значения при операциях вычислений? 2 Поясните команду условного перехода BTFSS STATUS, Z. 3 Как можно определить равенство чисел? 4 Какие способы адресации вы знаете? 5 Как контролируется в цикле выход за пределы массива? 6 Назначение регистра FSR. 7 Назначение регистра INDF. 8 Как находится среднее четырех регистров? 9 Зачем очищается регистр SUM перед циклом сложения? 10 Какое участие принимает бит C регистра Status в операции сдвига? 11 Как очистить нечетные разряды числа? 12 Какой логической функцией устанавливают в разряды единицы? 13 Какой логической функцией определяют равенство чисел? 14 Зачем применяют логическую функцию Исключительно ИЛИ? 15 Как оставить информацию только в битах 0-3 заданного числа? 16 Приведите таблицы истинности для AND, OR, XOR.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-01-28; просмотров: 196; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.147.87 (0.011 с.) |