Optron #24
22 февраля 1999

Ликбез - Ассемблер взгляд издалека: Логические операции, Операции AND, OR,XOR,NOT; мнемоники. Результаты действия команд.

       Ассемблер: взгляд издалека

{}Инфарх

  Продолжение. Начало - в || 20, 21

           Логические операции

  Разобравшись  в  прошлый раз с арифмети-
ческими  операциями,  перейдём к операциям
логическим.  В  отличие  от Бейсика, в Ас-
семблере они столь же важны.
  Тем,  кто  не  знаком с алгеброй логики,
скажу,  что  её главное отличие от обыкно-
венной арифметики состоит в том, что в ней
действия  производятся не над всем числом,
а над его битами - т.е. перенос из разряда
в разряд не производится.
  Процессор Z80 способен совершать следую-
щие логические операции:

             AND
             OR
             XOR
             NOT

  Но  не ищите в таблицах мнемоник команду
NOT - она записывается как "CPL".
  А разобраться в назначении каждой  логи-
ческой операции нам поможет таблица истин-
ности.


               Операция AND

              ┌───────────┐
              │    AND    │
              ├───┬───┬───┤
              │ A │ B │ Y │
              ├───┼───┼───┤
              │ 0 │ 0 │ 0 │
              │ 0 │ 1 │ 0 │
              │ 1 │ 0 │ 0 │
              │ 1 │ 1 │ 1 │
              └───┴───┴───┘

  Символами A и B обозначены операнды, а Y
- это результат.
  В  английском  языке "AND" означает "И".
В  качестве  микросхемы,  выполняющей  эту
функцию, можно привести 555ЛИ1.
  Суть  операции  "И" (логического умноже-
ния) можно уяснить из следующего примера.
  Обозначим прочтение вами моей статьи че-
рез  Y = 1,  а непрочтение - через  Y = 0.
Для  получения  результата  вам необходимо
выполнить две операции:
  - загрузить  в  ваш  Спекки "Оптрон" |24
(если да, то A = 1, а если нет, то A = 0);
  - найти  в "Оптроне" рубрику ЛИКБЕЗ (со-
ответственно, B = 1 или B = 0).
  Итак, для получения в качестве результа-
та   логической  "1"  оба  операнда  также
должны быть равны логической "1".
  Вот уравнение этой операции:

                 Y = A*B


               Операция OR

  "OR" в переводе означает "ИЛИ". Эту опе-
рацию  называют также "логическое сложени-
е". Снова обратимся к примеру.
  Чтобы ознакомится  с  моими  текстами  в
"Оптроне" |24 (т.е.  получить Y = 1),  вам
необходимо выбрать  рубрики ЛИКБЕЗ (A = 1)
или  ЛИТСТРАНИЧКА  (B  = 1). Ясно, что для
получения  положительного результата, еди-
нице  должен  быть равен или А, или В, или
оба вместе.
  Вот - таблица истинности для этой опера-
ции:

              ┌───────────┐
              │    OR     │
              ├───┬───┬───┤
              │ A │ B │ Y │
              ├───┼───┼───┤
              │ 0 │ 0 │ 0 │
              │ 0 │ 1 │ 1 │
              │ 1 │ 0 │ 1 │
              │ 1 │ 1 │ 1 │
              └───┴───┴───┘

  А вот - её уравнение:

                Y = A + B

  А пример из микросхемотехники - 555ЛЛ1.


               Операция XOR

  Это - ИСКЛЮЧАЮЩЕЕ ИЛИ.
  Снова привожу пример.
  Если вы вздумаете, читая мою статью, ОД-
НОВРЕМЕННО поиграть в "Чёрный Ворон", то я
скажу:
  "Нет, голубчики,  за двумя зайцами пого-
нишься - ни одного не поймаешь! Y = 0!"
  Соответсвенно - и таблица истинности:

              ┌───────────┐
              │    XOR    │
              ├───┬───┬───┤
              │ A │ B │ Y │
              ├───┼───┼───┤
              │ 0 │ 0 │ 0 │
              │ 0 │ 1 │ 1 │
              │ 1 │ 0 │ 1 │
              │ 1 │ 1 │ 0 │
              └───┴───┴───┘

  В  обычной  арифметике  эта операция из-
вестна как "суммирование по модулю 2":

                1 + 1 = 0

  Точно так  же в десятичной системе счис-
ления при "суммировании по модулю 10":

                9 + 1 = 0

  (При "сложении по модулю" перенос "оста-
ётся в уме").


               Операция NOT

  "NOT" означает "НЕ".  Эта операция -  не
простая, а очень простая. Она производится
только над одним операндом  и  меняет  его
значение  на  противоположное:

                ┌───────┐
                │  NOT  │
                ├───┬───┤
                │ A │ Y │
                ├───┼───┤
                │ 0 │ 1 │
                │ 1 │ 0 │
                └───┴───┘

  Для любителей уравнений:
                      _
                  Y = A

  Для "железячников": 555ЛН1.


          Перейдем к мнемоникам

  Воздействие арифметических  операций  на
флаговый регистр, напомню, вопросов не вы-
зывает...  Но  на  то она и логика,  чтобы
мозги процессору парить!  Так что  теперь,
рассматривая варианты мнемоник, будем ука-
зывать влияние логических операций на фла-
ги:

   ╔═════════════╤═══════════════════╗
   ║  МНЕМОНИКА  │Разряды регистра F ║
   ║             │     (флаги)       ║
   ╟────┬────────┼───────────────────╢
   ║Опе-│        │                   ║
   ║ ра-│Операнд │ C  Z P/V S  N  H  ║
   ║ ция│        │                   ║
   ╟────┴────────┼───────────────────╢
   ║ AND r       │ 0  x  P  x  0  1  ║
   ║ AND (HL)    │                   ║
   ║ AND n       │                   ║
   ║ AND (ii+n)  │                   ║
   ║             │                   ║
   ║ OR  r       │ 0  x  P  x  0  0  ║
   ║ OR  (HL)    │                   ║
   ║ OR  n       │                   ║
   ║ OR  (ii+n)  │                   ║
   ║             │                   ║
   ║ XOR r       │ 0  x  P  x  0  0  ║
   ║ XOR (HL)    │                   ║
   ║ XOR n       │                   ║
   ║ XOR (ii+n)  │                   ║
   ║             │                   ║
   ║ CPL         │ .  .  .  .  1  1  ║
   ╚═════════════╧═══════════════════╝

  Пояснения:
  Операции ВСЕГДА производятся над операн-
дом, указанным в таблице, и содержимым ак-
кумулятора;
  "." - флаг не меняется в результате опе-
рации;
  "x" - флаг устанавливается в зависимости
от результата операции;
  прочие обозначения - см. |21.


  Результаты действия команд (примеры)

  При выполнении команды

                  AND E

имеет место  операция  "И"  над содержимым
регистров "А" и "Е".  Допустим,  они имеют
следующие значения:

               A = 10011010
               E = 01111001

  В этом случае мы,  согласно таблице  ис-
тинности для AND, получим:

             1 0 0 1 1 0 1 0
                   AND
             0 1 1 1 1 0 0 1
             ───────────────
             0 0 0 1 1 0 0 0

  Результат "00011000" заносится в аккуму-
лятор. "E" своего значения не меняет.
  Точно так же при выполнении команд

                    OR

и

                   XOR

с теми же значениями операндов получим:

             1 0 0 1 1 0 1 0
                    OR
             0 1 1 1 1 0 0 1
             ───────────────
             1 1 1 1 1 0 1 1


             1 0 0 1 1 0 1 0
                   XOR
             0 1 1 1 1 0 0 1
             ───────────────
             1 1 1 0 0 0 1 1

  Команда "CPL" (операция "NOT",  не забы-
ли?)  производится  над  одним операндом -
содержимым регистра  "A".  Вот  что  будет
после её выполнения:

             1 0 0 1 1 0 1 0
         CPL ───────────────
             0 1 1 0 0 1 0 1

  С  логическими операциями - всё. Продол-
жение следует.

              ──══════════──


          
          
          
          




Другие статьи номера:

ZX-Обоз - Обзор электронной прессы: ZX-News 42, Don News 1, Nicron 106, ZX-Pilot 30.

Вся жизнь игра - Последний II: злодеи близко.

Ликбез - Ассемблер взгляд издалека: Логические операции, Операции AND, OR,XOR,NOT; мнемоники. Результаты действия команд.

Лит. страничка - Гриф "Y-II" (Дневник).

Реклама - Реклама и объявления...

Рубрика X - Прощания славянки.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Реклама - Реклама и объявления ...
Проза - Анна Десницкая. Рождественский ангел.
Застрял ? - Описание игры "Brave Star".

В этот день...   23 мая