Код. Тайный язык информатики - читать онлайн книгу. Автор: Чарльз Петцольд cтр.№ 73

читать книги онлайн бесплатно
 
 

Онлайн книга - Код. Тайный язык информатики | Автор книги - Чарльз Петцольд

Cтраница 73
читать онлайн книги бесплатно

AND A, D

B2

OR A, D

A3

AND A, E

B3

OR A, E

A4

AND A, H

B4

OR A, H

A5

AND A, L

B5

OR A, L

A6

AND A,[HL]

B6

OR A,[HL]

A7

AND A, A

B7

OR A, A

A8

XOR A, B

B8

CMP A, B

A9

XOR A, C

B9

CMP A, C

AA

XOR A, D

BA

CMP A, D

AB

XOR A, E

BB

CMP A, E

AC

XOR A, H

BC

CMP A, H

AD

XOR A, L

BD

CMP A, L

AE

XOR A,[HL]

BE

CMP A,[HL]

AF

XOR A, A

BF

CMP A, A

Команды AND, OR и XOR выполняются побитово, то есть отдельно над каждой парой битов. Например, в результате выполнения следующих команд значение в аккумуляторе будет равно 05h.

MVI A,0Fh

MVI B,55h

AND A, B

Если бы последней была команда OR, то результат был бы равен 5Fh; если бы последней была команда XOR — 5Ah.

Команда CMP (Compare — сравнить) аналогична команде SUB, за исключением того, что результат не сохраняется в аккумуляторе. Другими словами, команда CMP выполняет вычитание, а затем удаляет результат. В чем же смысл? Во флагах! Флаги говорят о том, как два сравниваемых байта соотносятся. Рассмотрим, например, следующие команды.

MVI B,25h

CMP A, B

После их выполнения содержимое аккумулятора (А) остается прежним. Если значение в A равно 25h, будет установлен флаг нуля, а если значение в A меньше 25h — флаг переноса.

Для восьми арифметических и логических операций также существуют версии, которые выполняются непосредственно над байтами.

Код

Команда

Код

Команда

C6

ADI A, xx

E6

ANI A, xx

CE

ACI A, xx

EE

XRI A, xx

D6

SUI A, xx

F6

ORI A, xx

DE

SBI A, xx

FE

CPI A, xx

Например, две приведенные выше строки можно заменить следующей.

CPI A,25h

Вот еще две команды для процессора 8080.

Код

Команда

27

DAA

2F

CMA

Команда CMA (Complement Accumulator — дополнить аккумулятор) выполняет дополнение значения в аккумуляторе до 1. Каждый 0 обращается в 1, а 1 — в 0. Если в аккумуляторе содержится значение 01100101, то после исполнения команды CMA в нем будет содержаться значение 10011010. Этого же результата можно достичь и с помощью следующей команды.

XRI A, FFh

Упомянутая выше команда DAA (Decimal Adjust Accumulator — десятичная коррекция аккумулятора), вероятно, является самой сложной в наборе команд процессора 8080. Специально для нее в микропроцессоре предусмотрено небольшое устройство.

DAA помогает программисту выполнять арифметические операции над десятичными числами в кодировке BCD (binary-coded decimal — десятичное в двоичной кодировке), где каждая тетрада может принимать значение только в диапазоне от 0000 до 1001, то есть от 0 до 9 в десятичном выражении. В формате BCD в восьми битах байта могут храниться две десятичные цифры.

Предположим, что в аккумуляторе содержится BCD-значение 27h, которое фактически соответствует десятичному значению 27, а в регистре B содержится BCD-значение 94h. (Обычно шестнадцатеричное значение 27h эквивалентно десятичному значению 39.) В результате выполнения следующих команд в аккумуляторе будет содержаться значение BBh, которое, разумеется, не является BCD-значением, поскольку в кодировке BCD-значение тетрады не может превышать 9.

MVI A,27h

MVI B,94h

ADD A, B

Однако при выполнении команды DAA в аккумулятор помещается значение 21h и устанавливается флаг переноса, поскольку сумма десятичных чисел 27 и 94 равна 121. Эта команда может пригодиться для арифметических операций над числами в кодировке BCD.

Часто возникает необходимость в прибавлении 1 к значению или в вычитании 1 из значения. В программе для выполнения умножения, описанной в главе 17, нужно вычесть из значения 1, и мы делали это, прибавляя значение FFh, которое является дополнением до 2 числа –1. Процессор 8080 предусматривает специальные команды для увеличения на 1 (инкрементирования) и уменьшения на 1 (декрементирования) значения в регистре или в ячейке памяти.

Код

Команда

Код

Команда

04

INR B

05

DCR B

INR C

0D

DCR C

14

INR D

15

DCR D

INR E

1D

DCR E

24

INR H

25

DCR H

2C

INR L

2D

DCR L

34

INR [HL]

35

DCR [HL]

3C

INR A

3D

DCR A

Однобайтовые команды INR и DCR влияют на все флаги, кроме флага переноса.

Набор команд процессора 8080 также включает четыре команды циклического сдвига, которые сдвигают содержимое аккумулятора на один бит влево или вправо.

Вернуться к просмотру книги Перейти к Оглавлению Перейти к Примечанию