Строительный блокнот  Развитие полупроводниковой электроники 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [ 28 ] 29 30 31 32 33 34 35 36 37

указатель стека снова помещается число (в данном случае 5Р-2), представляющее собой адрес последней заполненной ячейки.

Смысл пятой, последней из команд в рассматриваемой подгруппе (команда POP) противоположен предыдущей. По этой команде содержимое двух последовательных ячеек памяти с адресами SP и SP-f 1 передается в соответствующую регистровую пару. Число, хранящееся в регистре-указателе стека, при этом увеличивается на 2. Для полного уяснения смысла этой операции полезно снова обратиться к рис. 4.3.

К командам пересылок относятся также команды обмена байтами. Символические описания этих команд приводятся далее и пе требуют комментариев; XCHG: hlDE;

XTHL : Н-М (-SP + 1), L-M (SP).

Команды арифметических и логических операций. Эта группа в свою очередь делится на четыре подгруппы. К первой подгруппе относятся арифметические и логические операции с одним операндом. Первые три из ннх имеют Следующие символические описания:

1) CMC : С-*С;

2) STC: lS;

3) СЛ1Л:ЛЛ.

По первой команде логическое значение признака переноса С

т. е. заменяется на противоположное.


SP-f

/ SP-2

Сюда запи-оываетея YZ**

инвертируется, Следует заметить, что в символическом описании этой команды допущена неоднозначность, совершенно неприемлемая при любых формальных описаниях. Буквой С в одних случаях обозначается один из РОН, а в других - признак не-реноса. Поскольку мы передаем реальный перечень команд именно так, как он описывается в заводских инструкциях и другой подобной литературе, нам не остается ничего другого, как повторить эту неоднозначность, принеся читателю соответствующие извинения. По второй команде логическое значение признака переноса устанавливается равным 1, по третьей - инвертируется все содержимое регистра результата А.

Несколько особо стоит команда десятичной коррекции DAA. Эта команда используется при выполнении арифметических операций сложения и вычитания над десятичными числами. Желающих более подробно ознакомиться со смыслом этой команды отсылаем к [5]. Подгруппу команд с одним операндом завершают четыре команды, символические описания которых имеют вид:

Ь) INR R:R+ \-R; 84

/7-ьг+5

/7+2

Ркс. 4.3. памяти

Ячейки магазинной (стековой)



6) DEQ R i R-l-R;

7) ISX YZ:YZ+\-*YZ; ) DCX YZ: YZ~l-YZ;

Легко видеть, что эти команды предусматривают увеличение или уменьшение I ва единицу соответствующего 8- или 16-разрядного числа. При выполнении пя-: той Е шеетой команд могут изменяться логические значения всех признаков,

кроме признака переноса С.

Следуювую подгруппу составляют арифметические и логические операции

двумя операндами. Символические описания первых четырех из них имеют ; аид5

1 ADD R:A + R-A;

2) ADC RiA+R + C-i-A;

3) SUB R:A-R-A;

4} SBB R:A-R-C-A.

Арифметическая операция всегда выполняется над двумя числами, одно из которых хранится в регистре результата, а второй - в одном из РОН. Результат во всех случаях засылается в регистр результата. При выполнении второй и четвертой команд учитывается также значение признака переноса С. Здесь снова допускается уже отмеченная нами неоднозначность.

Символическое описание следующих трех команд рассматриваемой подгруппы имеет внд:

5) ANA R:AAR.A;

6) ORA R:A\/R-A; 7} XRA R:A®R--A.

Первая из них - команда, предусматривающая выполнение логической операции И над восемью парами разрядов двух слов. Порядок выполнения логической операции И над одной парой разрядов был рассмотрен в гл. 3 и иллюстрировался таблицей на рис. 3.4,в. Шестая команда предусматривает выполне-, ние логической операции ИЛИ над восемью парами разрядов двух слов. Логическая операция ИЛИ также была рассмотрена в следующей главе, и порядок ее выполнения иллюстрируется рис. 3.4,6. Наконец, седьмая команда предусматривает выполнение над восемью парами разрядов двух слов логической операции ИСКЛЮЧАЮЩЕЕ ИЛИ (ее более правильно называют суммирование по модулю 2 ). Порядок выполнения этой операции над одной парой разрядов описывается табл. 4.2. Для большей ясности приведем пример выполне-

Таблица 4.2

Таблица 4.3

Первый

операнд

10010011

Второй

операнд

11001110

Результат

10000010

операции

11011111

©

01011101



ния всех трех только что рассмотренных логических операвдй над восемью парами разрядов двух слов. Этот пример сведен в табл. 4.3.

Следующие четыре команды аналогичны командам 1) -4) рассматриваемой подгруппы о тем единственным отличием, что в качестве второго операнда используется 1 байт (D8) двухбайтовой команды:

8) ADI D8:A + D8-*A;

9) ACI D8:A + D8 + С-А;

10) SUI D8:A-D8-A;

11) SBl D8: A - D8 - C-A.

При выполнении следующих трех команд:

12) AN1 D8:A/\D8-A;

13) ORI D8: AyD8-*A;

14) XRI DS-.ADS--A

опять-таки в качестве второго операнда используется 1 байт двухбайтовой команды.

Следующие две команды рассматриваемой подгруппы - команды сравнения. Первая из них (15-я по счету), имеющая мнемоническое описание CPI D8, предусматривает сравнение двух чисел, одно из которых хранится в регистре результатов, а второе -представляет собой байт D8 двухбайтовой команды. Если в результате выполнения операции оказывается, что числа равны, то признаку нуля Z присваивается значение 1. Если же число, хранимое в регистре результата, окажется меньше операнда D8, то логическое значение 1 присваивается признаку переноса С.

Последняя (16-я) команда рассматриваемой подгруппы СМР R аналогична предыдущей о тем различием, что в качестве второго операнда используется содержимое одного из РОН.

Следующая по порядку подгруппа состоит нз одной команды:

DAD YZ:HL + YZ-HL,

предусматривающей выполнение операции сложения над двумя 16-разрядными (двухбайтовыми) двоичными числами. Смысл этой команды раскрывается ее символическим описанием. Напомним, что под YZ мы понимаем содержимое регистровых пар ВС, DE, HL или регистра SP. В отличие от команд предыдущей подгруппы, при выполнении которых могут изменяться логические значения всех признаков, при выполнении данной команды может изменяться лишь значение признака переноса С.

Последнюю подгруппу группы арифметических и логических команд составляют четыре команды: RAR, RRC, RAL и RLC, - предусматривающие выполнение операции сдвига содержимого регистра результатов. Порядок выполнения этих команд ясен из рис. 4.4. В каждом из четырех случаев логическое значение данного разряда заменяется логическим значением соседнего разряда. При командах RAR и RR.C подобная замена производится слева направо. Соответствующие операции так и называются сдвиг вправо . Существенная подробность состоит в том, что при сдвиге вправо логическое значение крайнего правого разряда присваивается признаку переноса С.

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



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [ 28 ] 29 30 31 32 33 34 35 36 37