8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 14 15 16 17 18 19 20 ... 39

которой указано парой регистров H-L. После выполнения команды загрузки содержимое приемника изменяется, а данные, которые содержались в источнике до выполнения команды, сохраняются.

В зависимости от комбинации типов операндов (источника и приемника) оператор загрузки производит пересылку данных различными способами, за исключением прямой пересылки данных из одной ячейки памяти в другую. Сначала содержимое ячейки памяти пересылается в регистр А, а затем данные из аккумулятора А пересылаются в ячейку памяти по указанному адресу приемника. То есть в этом случае команда загрузки D выполняется дважды.

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

Таблица 6.1. Примеры команд загрузки

Команда языка ассемблера

Машинный код команды

Описание операции

Требуемое число

импульсов тактовой частоты

LDB, А

47

(I-байтовая команда]

Содержимое регистра А пересылается в регистр В

4

LD D, 0А5Н

16 А5

(2-байтовая команда)

Константа А5 (шестнадцате-ричное число) загружается в регистр D

7

LDC, (HL)

1.г-

4. 1

Содержимое памяти по адресу, указанному парой регистров H-L, пересылается в регистр С

7

LDA, (2001Н)

ЗА 01 20 (3-байтовая команда)

Содержимое ячейки памяти 2001Н пересылается в регистр А

13

LD (8000Н), А

32 00 80 -1 т

Содержимое регистра А пересылается в ячейку памяти 8000Н

13

LDE,(IX+03H)

DD 5ЕОЗ

Содержимое ячейки памяти с адресом, равным сумме значения содержимого регистра IX и 3, пересылается в регистр Е

19

Как видно из таблицы, машинные коды команд загрузки значительно отличаются друг от друга (вообще их более 100 видов). Сравнение требуемого количества импульсов тактовой частоты показывает, что пересылка данных между регистрами требует значительно меньше времени, чем обмен данными между ЦПУ и устройством памяти.

Команды сложения и вычитания

В языке ассемблера используются четыре вида команд сложения и вычитания, которые выполняют арифметические действия с двоичными числами, хранящимися в регистрах или ячейках памяти. Эти 8-разрядные команды представленны в Табл. 6.2.

Таблица 6.2. Команды сложения и вычитания

6.3.

КОМАНДЫ

АРИФМЕТИЧЕСКИХ

ОПЕРАЦИЙ

11*1/.ll.»f« - • * .v

Команда языка ассемблера

Выполняемые операции

Сокращенные обозначения операций

ADDA.S

Прибавить S к A (Add S to А)

AA+S

ADCA, S

Сложение с переносом (AddS to A with Сапу)

A<-A+S + C

SUB A, S

Вычесть S из A (Subtract S from А)

A<-A-S

SBC A, S

Вычитание с переносом (Subtract S from A with Carry)

1 AA-S-C

Источник S: константа, регистр, содержимое памяти, (HL) и т. д. Перенос С: значение флага переноса (в 0-м разряде регистра F).

Слагаемое и уменьшаемое, а также результат операций сложения и вычитания всегда помещаются в регистр А (Рис. 6.2).

Буква С в обозначении команд сложения и вычитания с переносом («ADC» и «SBC») - это сокращение выражения «with Сапу» (с Переносом). Если перед выполнением команды ADC произошел Перенос разряда, то в разряде С регистра признаков устанавливается значение «1». В этом случае при сложении по команде ADC к сумме операндов добавляется I.

Команды сложения и вычитания с переносом применяются, когда разрядность двоичных чисел больше восьми. Такие числа Разбиваются на части по 8 разрядов. Тогда, например, при сложении 8 старших разрядов учитывается, был или нет перенос разряда При суммировании 8 младших разрядов.


В Z80 посредством команды ADD возможно также выполнение операции сложения 16-разрядных чисел. В этом случае роль аккумулятора выполняет пара регистров H-L.

В Табл. 6.3 приведены примеры команд сложения и вычитания с применением операторов ADD и SUB.

Таблица 6.3. Примеры команд сложения и вычитания

Команда языка ассемблера

Машинный

код команды

Описание операции

Требуемое число

импульсов тактовой частоты

ADDA 1FH

C61F

Константа 1F (шестнадцатеричное число) прибавляется к содержимому регистра А результат помещается в регистр А

7

ADD A, (HL)

86

Содержимое ячейки памяти с адресом, указанным в регистрах H-L, прибавляется к содержимому регистра А, результат помещается в регистр А

7

SUB А, В

90

Из содержимого регистра А вычитается содержимое регистра В, результат помещается в регистр А

4

ADD HL, ВС

09

Сложение 16-разрядных чисел. К содержимому регистра H-L прибавляется содержимое регистра В-С, результат помещается в регистр H-L

11

ADD А А

87

Содержимое регистра А удваивается

4

SUB А, А

97

Содержимое регистра А обнуляется

4

При выполнении команд сложения и вычитания содержимое регистра признаков меняется в соответствии с результатом вычисления. Например, когда происходит перенос разряда при сложении или заем разряда при вычитании, флаг переноса принимает значение «1».

Команды увеличения (INC) и уменьшения (DEC) на 1

В случаях, когда вычисления повторяются (например, данные из ячеек памяти последовательно загружаются в память), для подсчета числа выполняемых операций часто требуется увеличение или уменьшение некоторой переменной на 1. В этом случае обычно используют команды INC (увеличение) или DEC (уменьшение), в результате которых содержимое памяти или регистра соответственно увеличивается или уменьшается на 1. В Табл. 6.4 приведены примеры команд с операторами INC и DEC.

120 =----=====---===

Таблица 6.4. Примеры команд с операторами IN С и DEC

Команда языка ассемблера

Машинный код команды

Описание операции

Требуемое число

импульсов тактовой частоты

INCA

ЗС

К содержимому регистра А прибавляется I

4

INC(HL)

34

К содержимому ячейки памяти с адресом, указанным в сдвоенном регистре H-L, прибавляется I

11

DEC HL

Из содержимого пары регистров H-L (16-разрядное число) вычитается 1

6

«TNC» - сокращение слова Increment (увеличение), «DEC» - сокращение слова Decrement (уменьшение).

В результате применения операторов INC и DEC содержимое флага переноса С не

меняется.

Команда сравнения (CP)

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

Команда сравнения (Compare) путем вычитания одного числа из другого сравнивает содержимое регистра А с содержимым другого регистра или ячейки памяти. Результат сравнения помещается в регистр флагов.

Команда сравнения (Табл. 6.5) выполняет вычитание по формуле «А - и». Отличие команды сравнения от команды вычитания «SUB п» состоит в том, что в результате применения оператора CP содержимое регистра А не меняется. Использование оператора сравнения в комбинации с оператором условного перехода позволяет осуществить, например, следующее действие: «если содержимое регистра А больше некоторого значения, перейти на другой адрес».

В Табл. 6.6 приведены примеры применения оператора сравнения.

121


г

Таблица 6.5. Команда сравнения

Команда языка ассемблера

Выполняемая команда

Действие

Регистр флагов

CP л

Сравнить А с я (Compare A with п). я - константа, регистр, (H-L) и т. д.

А-я.

Содержимое регистра А не меняется

Если А > я, то С = 0, Z = 0 если А = л, то Z = 1; если А < я, то С = 1

Таблица 6.6. Примеры команд сравнения

Команда языка ассемблера

Машинный

код команды

Описание операции

Требуемое число

импульсов тактовой частоты

СРВ

В8

Содержимое регистра А сравнивается с содержимым регистра В

4

СР64Н

FE64

Содержимое регистра А сравнивается с константой 64Н

7

CP (HL)

BE

Содержимое регистра А сравнивается с содержимым ячейки памяти по адресу, указанному в сдвоенном регистре H-L

7

ОПЕРАЦИЙ мер логическое умножение «И», логическое сложение «ИЛИ», «Исключающее ИЛИ» и т. п.

Таблица 6.7. Операторы «И», «ИЛИ», «Исключающее ИЛИ»

Команда языка ассемблера

Действие

ANDS ORS XORS

Поразрядно выполняется логическое умножение, логическое сложение, «Исключающее ИЛИ» между двоичными кодами, находящимися в регистрах А и S. Результат помещается в регистр А

S - константа, регистр, адрес ячейки памяти, хранящийся в сдвоенном регистре H-Lht. п.

Оператор «И» часто используется для того, чтобы выборочно оставить неизменным содержание определенных разрядов регистра А, обнулив остальные разряды (Рис. 3.11). Например, если мы хотим сохранить 2-й и 3-й разряды числа, находящегося в регистре А, а остальные разряды обнулить, то производим логическое умножение на 8-разрядное двоичное число, второй и третий разряды которого равны «1», а остальные - «О». В этом случае мы применяем команду «AND ОСН», где шестнадцатеричное число «ОС» равно двоичному числу «00001100».

Оператор «ИЛИ» используют, например, для выборочной установки значения «1» в определенных разрядах двоичного числа (Рис. 3.9), или для проверки равенства нулю содержимого пары регистров. Так, проверка равенства нулю 16-разрядного числа, содержащегося в сдвоенном регистре H-L, осуществляется с помощью оператора «ИЛИ». Его применяют к двум 8-разрядным числам, находящимся в регистрах Н и L. Результат операции равен 0 лишь в том случае, если содержимое обоих регистров равно «0». Следует Иметь в виду, что нельзя выполнить какую-либо логическую операцию непосредственно над содержимым регистров Н и L. Поэтому с°Держимое регистра Н сначала нужно перенести в регистр А и

Отличия команды сравнения и команды вычитания

Обе команды «СР я» и «SUB я» производят операцию вычитания А-я, но:

при выполнении Г с°ДеРжим°е регистра А не меняется, команды сравнения 1 РезУльтат сравнения помещается в регистр [ флагов

при выполнении Г результат вычитания помещается в регистр А, команды вычитания-I содержимое флага N регистра признаков изменяется

6.4.

КОМАНДЫ ЛОГИЧЕСКИХ

Как мы уже говорили в третьей главе, микрокомпьютер может выполнять операции с логическими переменными, такие как, напри-

Эти операции поразрядно выполняются над 8-разрядными числами, одно из которых находится в регистре А. Результат логической операции также помещается в регистр А. Аналогичная операция вычисляет дополнительный код числа, находящегося в регистре А.

Команды «И», «ИЛИ», «Исключающее ИЛИ» Как видно из Табл. 6.7, структура логических операторов «И» (AND), «ИЛИ» (OR), «Исключающее ИЛИ» (XOR) одна и та же.



0 ... 14 15 16 17 18 19 20 ... 39