Операция И часто используется для проверки одного из разрядов слова, находящегося в аккумуляторе, с помощью другого слова – маски. В МПУС эта операция может использоваться для проверки состояния внешних устройств или их отдельных элементов. Предположим, например, что в разряде D2 слова, передаваемого внешним устройством в МП, записана информация о состоянии этого устройства (например, лог.1 – устройство сработало, лог.0 – не сработало). После ввода этого слова в аккумулятор над содержимым аккумулятора и словом-маской (которое может быть записано в другом регистре, памяти или втором байте) проведем операцию логического И. Во всех разрядах маскирующего слова, кроме проверяемого (т.е. разряда D2), должны быть записаны нули. В проверяемом разряде в слове-маске записывается лог.1. Результат операции
Слово в аккумуляторе |
Х7 |
Х6 |
Х5 |
Х4 |
Х3 |
Х2 |
Х1 |
Х0 |
Слово-маска |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
Результат |
0 |
0 |
0 |
0 |
0 |
Х2 |
0 |
0 |
В зависимости от состояния разряда D2 исходного слова (Х2 =1 или Х2 = 0) результат операции может получиться нулевым или не нулевым. По этому условию с помощью команд управления программой можно осуществить переход на ту или иную ветвь программы, то есть переход по программе зависит от того, сработало или нет внешнее устройство.
Операция логического ИЛИ может использоваться для принудительной установки отдельных разрядов слова, записанного в аккумуляторе, в единицу. Это также делается с помощью слова-маски, в нужных разрядах которого записаны единицы.
С помощью операции ИСКЛЮЧАЮЩЕЕ ИЛИ производится проверка двух слов на абсолютное равенство – только тогда, когда операнды в обоих словах поразрядно совпадают, результат операции получается нулевой. Кстати, производя такую операцию над содержимым регистра с самим собой, можно очистить этот регистр – т.е. получить во всех разрядах нули. Другое применение операции – инвертирование слов. При выполнении операции ИСКЛЮЧАЮЩЕГО ИЛИ над исходным словом и словом-маской, во всех разрядах которого записаны единицы, получается инверсия исходного слова.
К группе логических операций относятся и операции сдвига. Слово в аккумуляторе может сдвигаться влево (команда RAL), при этом значение старшего разряда переписывается в нулевой разряд (и в триггер переноса регистра признаков), или вправо (команда RAR) – тогда значение младшего разряда слова переписывается в старший разряд аккумулятора (и в триггер признака переноса регистра признаков). Содержимое других разрядов просто переписывается в соседние разряды соответственно слева или справа. Такой сдвиг называется арифметическим. При циклическом сдвиге в операции участвует и бит переноса регистра признаков. При циклическом сдвиге влево (RLC) содержимое старшего разряда сдвигаемого слова переписывается в триггер признака переноса регистра признаков, а содержимое этого триггера заносится в младший разряд аккумулятора. При циклическом сдвиге вправо (RRC) младший бит слова переписывается в триггер переноса регистра признаков, а содержимое этого триггера переписывается в старший разряд аккумулятора. Команды сдвига могут использоваться для написания программ умножения и деления для микропроцессоров, в списке команд которых названные операции отсутствуют.
Интересными с точки зрения использования их в программах управления МПУС являются команды сравнения. По этим командам из содержимого аккумулятора вычитается содержимое любого регистра (CMP r), ячейки памяти (CMP M) или второго байта команды (CPI). Но содержимое аккумулятора не изменяется, а результаты этих операций воздействуют только на биты состояния регистра признаков, по которым могут осуществляться переходы по программе. Команды удобны для сравнения текущих значений параметров системы с эталонными значениями.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.