Студопедия

КАТЕГОРИИ:


Архитектура-(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. Теперь наша программа будет рабо­тать по следующему алгоритму, представляющему собой перечень задач:

1. Установить указатель FSR на начало массива.

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 (НЕ).

Она обозначается символом надчеркивания. Таким образом, выражение означает, что переменная f является обратной величиной переменной А. То есть если А = 0, то f = 1, и наоборот, если А = 1, то f = 0. На рисунке 4.2а эта зависимость представлена в виде таблицы истинности (truth table).

Рисунок 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; Просмотров: 792; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.