Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 264; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.3 (0.01 с.) |