![]() КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Лекция 4. Косвенная адресация. Логика. Маскирование
Цель лекции: Познакомиться с применением косвенной адресации, логическими функциями и маскированием. 4.1 Косвенная адресация. В любом микропроцессоре имеется одна из разновидностей косвенной адресации, при которой один или более внутренних регистров используются для хранения адреса операнда в памяти данных. Такие адресные или индексные регистры используются в качестве указателя на данные. Основное отличие от прямой адресации заключается в том, что содержимое регистра-указателя может изменяться в процессе выполнения программы. То есть искомый адрес является переменной величиной. Например, для очистки массива данных можно использовать цикл, инкрементируя в каждом проходе цикла регистр, указывающий на адрес очищаемого регистра. В микроконтроллерах РIС реализован достаточно простой вариант такого типа адресации. Имеется отдельный элемент ИЛИ-НЕ, который детектирует обращение по прямому 7-битному адресу b'0000000' и, просто выставляет на шину адреса памяти данных содержимое регистра h'04', называемого индексным регистром (FSR). Это происходит, если в качестве адресата команды используется нулевой адрес, по которому располагается регистр косвенной адресации INDF. Этот регистр является виртуальным, т.е. физически не существует. Он используется исключительно для выставления содержимого регистра FSR на шину. В качестве простого примера предположим, что содержимое регистра FSR равно h'66'.Тогда команда clrf h’00’ (или clrf INDF) очистит регистр, расположенный по адресу h'66’ а не по адресу h'00’. Содержимое регистра FSR можно изменить в любой момент времени, например, его можно инкрементировать в каждом проходе цикла, как в программе очистки регистров, рассмотренной ниже. Перепишем программу очистки массива, заменив линейную структуру циклом, как показано на рисунке 4.1. Теперь наша программа будет работать по следующему алгоритму, представляющему собой перечень задач:
2. Очистить адресуемый регистр данных, указав в качестве адресата регистр данных h'00'. 3. Инкрементировать указатель FSR. 4. Проверить, не достиг ли указатель конца массива, в нашем случае — адреса h'7F'. Если нет, то перейти к пункту 2. 5. Если массив очищен, то продолжить выполнение программы. Код, соответствующий этому алгоритму, приведен в программе. Очистку регистров по-прежнему выполняет команда clrf, которая «проходит» по массиву, начинающемуся с адреса h'20’. При каждом проходе цикла указатель в регистре данных h'04' инкрементируется. В конце концов, содержимое регистра FSR выйдет за границу заданного диапазона, в результате чего программа выйдет из цикла и продолжит выполнение следующей секции кода. Clearfiles; подпрограмма очистки массива. Movlw h’20’; помещаем начальный адрес в W. Movwf FSR; и копируем его в FSR. Metka Clrf INDF; очищаем регистр, на который указывает FSR. Incf FSR, F; инкрементируем указатель на адрес следующего регистра. Теперь проверяем, не достиг ли указатель верхней границы массива? Movf FSR, W; копируем указатель в W. Addlw -h’7F’; сравниваем с адресом последнего регистра. Btfss STATUS, Z; если флаг Zero установлен (Z=1), то завершаем цикл. Goto Metka; иначе выполняем повтор цикла. Return; завершаем цикл и выходим из подпрограммы. 4.2 Логические функции Английский математик Джордж Буль в середине 19-го столетия создал раздел алгебры, касающийся символической обработки логических отношений. Этот раздел алгебры, называемый Булевой алгеброй, оперирует величинами, которые могут иметь только два состояния: истина или ложь. 4.2.1 Инверсия или операция NOT (НЕ). Она обозначается символом надчеркивания. Таким образом, выражение Рисунок 4.2 – Операция NOT Общепринятое изображение элемента НЕ приведено на рисунке 4.3б. Кружок на изображении логических схем всегда означает инверсию и очень часто используется в сочетании с другими логическими элементами (см., например, рисунок 4.3в. 4.2.2 Операция AND. Операция AND (И) реализует функцию «все или ничего». Результат операции будет истинным только в том случае, если оба входа истинны. На рисунке 4.3 имеются две входные переменные. Операцию AND иногда называют операцией логического умножения, поскольку (по аналогии с обычным умножением) результат этой операции между любым битом и 0 всегда будет равен 0. Рисунок 4.3. Операция AND 4.2.3 Операция OR Рисунок 4.4. Операция OR Операция OR (ИЛИ) может использоваться, в тех случаях когда нужно обнаружить ситуацию, что на всех входах нули, см. рисунок 4.4. Если предположить, что вход В является управляющим входом, а вход А — входом данных, то из рисунка 4.4, а видно, что данные проходят через вентиль при В = 0 и задерживаются (на выходе постоянно 1) при В = 1. 4.2.4 Операция Exclusive OR – XOR (Исключительно ИЛИ). Функция XOR (Исключающее ИЛИ) истинна, если истинен только один из входов. Поэтому на символе изображено «=1», см. рисунок 4.5б. В отличие от обычной операции ИЛИ, при 1 на обоих входах на выходе будет 0. Аналогично, из таблицы истинности оператора Исключающее ИЛИ-НЕ (XNOR), показанной на рисунке 5.4, в, видно, что выход такого элемента истинен при одинаковых сигналах на обоих входах. Таким образом, вентиль Исключающее ИЛИ-НЕ можно рассматривать в качестве однобитного компаратора. Рисунок 5.4 - Операция XOR Исключающее ИЛИ и Исключающее ИЛИ-НЕ часто применяются для определения переполнения в знаковом бите. Эта ситуация возникает, если знаковые биты (sign) обоих операндов одинаковы (SB =SA), а знаковый бит C результата отличается от них. Схема такого детектора, см. рисунок 4.5, описывается логической функцией:V=(SBÅSA)(SBÅSC). Рисунок 4.5 – Обнаружение переполнения в знаковом бите
Дата добавления: 2014-12-07; Просмотров: 841; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |