Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микропроцессоры Токхайм / 6.4. СОСТАВ КОМАНД ЛОГИЧЕСКИХ ОПЕРАЦИИ

.doc
Скачиваний:
166
Добавлен:
13.05.2015
Размер:
2.35 Mб
Скачать

6.4. СОСТАВ КОМАНД ЛОГИЧЕСКИХ ОПЕРАЦИИ

Логические команды составляют еще одну группу команд типового микропроцессора. Они сведены в табл. 6.4 и содержат команды И, ИЛИ, ИЛИ ИСКЛЮЧАЮЩЕЕ,

НЕ (инверсия) и сдвига. Здесь именно аккумулятор со­ставляет ядро большинства операций. Как и при арифме­тических командах, способ адресации и здесь влияет на способ и место нахождения других данных в системе.

Рассмотрим выполнение типовым микропроцессором команды И непосредственно (рис. 6.12, а). Содержимое

аккумулятора (0001 0011) подвержено операции И побитно. Согласно таблице истинности для операции И (см. табл. 3.1) только самые младшие биты каждого числа рав­ны 1, следовательно, результатом будет 0000 0001, он по­мещается в аккумулятор. Согласно последней колонке табл. 6.4 результатом всех операций И будет сброс индикатора переноса, мы это видим также на рис. 6.12, а. Результат операции И проверяется с целью определения — не нуль ли он, и если нет, то индикатор нуля сбрасывается в 0. Отметим использование точки (•) в табл. 6.4 в колонке символов для обозначения операции И.

На рис. 6.12,б приведен другой пример использования команды И, в этом случае — И косвенной адресации (мне­моника ANA М). Содержимое аккумулятора подвержено операции И (бит с битом) с содержимым ячейки памяти, указанной парой HL. После операции 0011 1100 И

0000 0001 полученный результат 0000 0000 помещен в ак­кумулятор. Индикатор переноса сбрасывается (СБРОС) согласно табл. 6.4. Помещенный в аккумулятор результат проверяется, и, поскольку он равен 0, индикатор нуля уста­навливается в 1.

Внимательно рассмотрим рис. 6.12,б. В этих двух при­мерах второй операнд — 0000 0001, он используется как маска. Маска 0000 0001 на рис. 6.12, с и б может быть использована для сброса в 0 семи старших бит или, с уче­том наличия индикатора нуля, для тестирования значений 0 или 1 в позиции младшего бита аккумулятора (в этом случае на единственную 1 надевается маска 0000 0001). Но нужно быть осторожным. Заметим, что содержимое акку­мулятора изменилось после операции И. Некоторые мик­ропроцессоры снабжены специальными командами тести­рования битов, которые выполняют операции И с содержи­мым аккумулятора и с маской байта без изменения содержимого всего аккумулятора, изменяя состояние инди­каторов.

Четыре команды ИЛИ (см. табл. 6.4) выполняются с содержимым аккумулятора и содержимым какой-либо дру­гой ячейки памяти и регистра. На рис. 6.13 приведен при­ мер операции ИЛИ, когда содержимым аккумулятора будет 1100 1100, тогда как регистр L содержит 0000 1111. Результат—1100 1111. Числа подвержены операции ИЛИ побитно согласно таблице истинности ИЛИ (табл. 3.1). Содержимое 0000 1111 регистра L может рассматриваться как маска, которая всегда будет обращать 4 младших би­та в 1111. Отметим использование логического знака (+) для обозначения операции ИЛИ в колонке символов в табл. 6.4.

В табл. 6.4 приведены пять команд ИЛИ ИСКЛЮЧА­ЮЩЕЕ для типового микропроцессора. На рис. 6.14 пока­зан процесс выполнения команды ИЛИ ИСКЛЮЧАЮ­ЩЕЕ Л с Л. Результатом ИЛИ ИСКЛЮЧАЮЩЕЕ

1010 1010 с самим собой (рис. 6.14) будет 0000 0000. Выпол­нение этой операции любого числа с самим собой всегда дает результат 0000 0000, индикатор нуля всегда устанав­ливается в 1, что означает нулевое содержимое индикатора, а в соответствии с табл. 6.4 индикатор переноса CY всегда будет сброшен в 0.

Две последние логические операции табл. 6.4 осущест­вляются командами циклического сдвига с переносом.

Схемы в колонке символики показывают результат сдвига, выполняемого этими командами.

Рассмотрим приведенный на рис. 6.15 пример использо­вания команды циклического сдвига вправо с переносом: содержимое аккумулятора (ООП 0001) сдвинуто на одну позицию вправо и его младший бит (1 в этом примере) передается в позицию бита индикатора переноса, тогда как имевшийся там бит занимает позицию старшего бита аккумулятора, в котором содержится 0001 1000 после за­вершения операции. Индикатор переноса установится в 1, индикатор нуля не изменится.

Используя одну или несколько команд циклического сдвига, можно тестировать весь заданный состав бит, а ин­дикатор переноса может быть сброшен или установлен. Индикатор переноса может быть тестирован затем коман­дой условного ветвления. Тест паритета является другим приложением использования команд сдвига. Паритет дво­ичного числа определяется числом содержащихся в нем единиц: четный паритет — общее число единиц четное; не-четный паритет — общее число единиц нечетное.

Заметим, что команды сдвига оперируют только данны­ми аккумулятора и не требуют других операндов, располо­женных в памяти или регистрах. Поэтому здесь способ адресации называется неявным, а иногда вообще не ука­зывается. Многие МП обладают несколькими иными, чем типовой микропроцессор, типами команд сдвига.

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

Упражнения

Все упражнения связаны с табл. 6.4, обращаться к ко­торой следует постоянно.

6.24. Какой КОП (шестнадцатеричный) имеет команда ANA Н на рис. 6.16? Ее формат ______ байт.

6.25. Каково содержимое аккумулятора на рис. 6.16 после операции И?

6.26. Назвать состояние индикаторов на рис. 6.16 после операции И.

6.27. Если роль байта в регистре Н на рис. 6.16 состоит в тестировании старшего бита аккумулятора (0 или 1),

слово 1000 0000 в регистре Н называется ______ (маской,

словом теста).

6.28. Откуда поступает операнд, подверженный операции ИЛИ непосредственное (ORI) с содержимым аккумулятора?

6.29. Знак ( + ) в табл. 6.4 означает операцию ________

(сложение, ИЛИ).

Каков источник адреса (LOC) операнда на рис. 6.17 в памяти данных?

Каково содержимое аккумулятора на рис. 6.17 после операции ИЛИ?

Назвать состояния индикаторов в регистре состоя­ния на рис. 6.17 после операции ИЛИ.

6.33. Мнемоника команды ИЛИ ИСКЛЮЧАЮЩЕЕ на ассемблере на рис. 6.18 _______.

6.34. Что является источником операнда, подверженно­го операции ИЛИ ИСКЛЮЧАЮЩЕЕ с содержимым акку­мулятора на рис. 6.18?

6.35. Каково содержимое аккумулятора на рис 6.18 после операции ИЛИ ИСКЛЮЧАЮЩЕЕ?

6.36. Каково состояние индикаторов на рис. 6.18?

Каково содержимое аккумулятора на рис. 6.19 после выполнения команды сдвига?

Какие состояния индикаторов на рис. 6.19 после операции циклического сдвига влево?

6.24. А4Н; 1. 6.25. 1111 ООП и 1000 0000 выполняется побитно и дает 1000 0000, что и будет содержимым аккумулятора. 6.26. В инди­каторах переноса и нуля будут нули. 6.27. Слово 1000 0000 является маской, если его роль состоит в тестировании наиболее значимого бита аккумулятора. Используя эту маску с командой ANA Н, получаем: если в индикаторе нуля 1, наиболее значимый бит байта в аккумуляторе 0; если в индикаторе нуля 0, старший бит байта в аккумуляторе 1. 6.28. Команда ORI извлекает операнд из 2-го байт памяти. 6.29. ИЛИ. 6.30. Пара регистров HL. 6.31. 1000 0111. 6.32. Индикатор переноса сброшен; индикатор нуля сброшен — 0. 6.33. КОП ИЛИ ИСКЛЮЧАЮЩЕЕ АСН (см. табл. 6.4), его мнемоника XRA Н. 6.34. Операцией является ИЛИ ИСКЛЮЧАЮЩЕЕ А с Н. Значит, операнд поступит из регистра Н. 6.35. 1100 ООП. Заметим, что ИЛИ ИСКЛЮЧАЮЩЕЕ с 1111 1111 да­ет инвертирование байта аккумулятора. 6.36. Индикатор переноса сбро­шен; индикатор нуля сброшен—0. 6.37. 1110 0111. 6.38. Только инди­катор переноса подвержен влиянию операции циклического сдвига вле­во; следовательно, индикатор переноса принимает 0 (значение бывшего старшего бита в аккумуляторе), а индикатор нуля остается 0.