Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / Lab_moto / 3.doc
Скачиваний:
21
Добавлен:
16.04.2013
Размер:
196.1 Кб
Скачать

2. Команды байтовой логики.

К командам байтовой логики относятся команды AND, ORA (OR with Accumulator), COM (COMplement) и EOR (Exclusive OR). Все команды, кромеCOM являются двухоперандными. Первым операндом всегда является содержимое аккумулятора. Вторым операндом у этих команд может быть непосредственное значение или содержимое одной из ячеек памяти. Результат операции помещается в аккумулятор. КомандыAND и ORA выполняют операции логического умножения и логического сложения, соответственно. КомандаEOR выполняет сложение по модулю 2. Единственным операндом командыCOMможет быть как один из регистров, так и одна из ячеек памяти, над содержимом которых будет произведена операция логического отрицания (или дополнения до "минус единицы"). Другими словами, каждый бит изменит свое значение на противоположное, то есть инвертируется.

Примечание 1: операция сложения по модулю 2 еще известна как операция "исключающее ИЛИ". В подавляющем большинстве языков ассемблера других микропроцессоров команды, выполняющие аналогичные действия называются XOR.

Примечание 2: в ассемблерах некоторых других микропроцессоров команда, выполняющая логическое отрицание, называется NOT.

Пример 1. Работу команды логического умножения можно продемонстрировать на данной программе, которая обнуляет содержимое старшей тетрады в ячейке $50.

0100 B6 50 LDA $50 Загрузить значение из ячейки в аккумулятор.

0102 A4 0F AND #$0F Обнулить старшую тетраду; содержимое младшей не изменяется.

0104 B7 50 STA $50 Сохранить измененное значение.

Список тестов:

Начальное значение в ячейке $50

Итоговое значение в ячейке $50

Содержимое регистра CC

$02

(00000010B)

$02

(00000010B)

111.x...

$F0

(11110000B)

$00

(00000000B)

111.x.Z.

$79

(01111001B)

$09

(00001001B)

111.x...

Пример 2. Приведенная ниже программа программно реализует операцию сложения по модулю 2, без использования командыEOR. Функция "Исключающее ИЛИ" может быть представлена на основе базовых функций "И" и "ИЛИ" следующем образом: D=BÅC=(ØB&C)Ú(B&ØC). Первый операнд находится по адресу $50, второй-по адресу $51. Результат помещается в ячейку $52.

0100 B6 50 LDA $50 Загрузить операндB.

0102 43 COMA Вычислить его логическое отрицание.

0103 B4 51 AND $51 Логически умножить на операндC.

0105 B7 52 STA $52 Сохранить промежуточный результат.

0107 B6 51 LDA $51 Загрузить операндC.

0109 43 COMA Вычислить его логическое отрицание.

010A B4 50 AND $50 Логически умножить на операндB.

010C BA 52 ORA $52 Логически сложить с сохраненным промежуточным результатом.

010E B7 52 STA $52 Сохранить результатD.

Список тестов:

Значение в ячейке $50

Значение в ячейке $51

Результат в ячейке $52

Содержимое регистра CC

$00

(00000000B)

$29

(00101001B)

$29

(00101001B)

111.x..С

$37

(00110111B)

$A5

(10100101B)

$92

(10010100B)

111.xN.С

$A5

(10100101B)

$37

(00110111B)

$92

(10010100B)

111.xN.С

$B9

(10111001B)

$B9

(10111001B)

$00

(00000000B)

111.x.ZС

Пример 3. Гораздо более короткая программа делает то же самое, что и предыдущая, с помощью команды ассемблераEOR.

0100 B6 50 LDA $50 Загрузить операндB.

0102 B8 51 EOR $51 Произвести сложение по модулю 2 с операндомC.

0104 B7 52 STA $52 Сохранить результатD.

Список тестов такой же, как и у предыдущей программы.

Соседние файлы в папке Lab_moto