Раздел: Документация
0 ... 14 15 16 17 18 19 20 ... 39 которой указано парой регистров H-L. После выполнения команды загрузки содержимое приемника изменяется, а данные, которые содержались в источнике до выполнения команды, сохраняются. В зависимости от комбинации типов операндов (источника и приемника) оператор загрузки производит пересылку данных различными способами, за исключением прямой пересылки данных из одной ячейки памяти в другую. Сначала содержимое ячейки памяти пересылается в регистр А, а затем данные из аккумулятора А пересылаются в ячейку памяти по указанному адресу приемника. То есть в этом случае команда загрузки D выполняется дважды. В Табл. 6.1 представлены различные типы команд загрузки на языке ассемблера и соответствующие им машинные коды команд. В таблице также дано описание операций и указано количество импульсов тактовой частоты, необходимое для их выполнения. Таблица 6.1. Примеры команд загрузки
Как видно из таблицы, машинные коды команд загрузки значительно отличаются друг от друга (вообще их более 100 видов). Сравнение требуемого количества импульсов тактовой частоты показывает, что пересылка данных между регистрами требует значительно меньше времени, чем обмен данными между ЦПУ и устройством памяти. Команды сложения и вычитания В языке ассемблера используются четыре вида команд сложения и вычитания, которые выполняют арифметические действия с двоичными числами, хранящимися в регистрах или ячейках памяти. Эти 8-разрядные команды представленны в Табл. 6.2. Таблица 6.2. Команды сложения и вычитания 6.3. КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
Источник 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. Примеры команд сложения и вычитания
При выполнении команд сложения и вычитания содержимое регистра признаков меняется в соответствии с результатом вычисления. Например, когда происходит перенос разряда при сложении или заем разряда при вычитании, флаг переноса принимает значение «1». Команды увеличения (INC) и уменьшения (DEC) на 1 В случаях, когда вычисления повторяются (например, данные из ячеек памяти последовательно загружаются в память), для подсчета числа выполняемых операций часто требуется увеличение или уменьшение некоторой переменной на 1. В этом случае обычно используют команды INC (увеличение) или DEC (уменьшение), в результате которых содержимое памяти или регистра соответственно увеличивается или уменьшается на 1. В Табл. 6.4 приведены примеры команд с операторами INC и DEC. 120 =----=====---=== Таблица 6.4. Примеры команд с операторами IN С и DEC
«TNC» - сокращение слова Increment (увеличение), «DEC» - сокращение слова Decrement (уменьшение). В результате применения операторов INC и DEC содержимое флага переноса С не меняется. Команда сравнения (CP) При составлении программы достаточно часто возникает необходимость сравнить значения двух переменных и, в зависимости от результата, выполнить те или иные действия. Команда сравнения (Compare) путем вычитания одного числа из другого сравнивает содержимое регистра А с содержимым другого регистра или ячейки памяти. Результат сравнения помещается в регистр флагов. Команда сравнения (Табл. 6.5) выполняет вычитание по формуле «А - и». Отличие команды сравнения от команды вычитания «SUB п» состоит в том, что в результате применения оператора CP содержимое регистра А не меняется. Использование оператора сравнения в комбинации с оператором условного перехода позволяет осуществить, например, следующее действие: «если содержимое регистра А больше некоторого значения, перейти на другой адрес». В Табл. 6.6 приведены примеры применения оператора сравнения. 121 г Таблица 6.5. Команда сравнения
Таблица 6.6. Примеры команд сравнения
ОПЕРАЦИЙ мер логическое умножение «И», логическое сложение «ИЛИ», «Исключающее ИЛИ» и т. п. Таблица 6.7. Операторы «И», «ИЛИ», «Исключающее ИЛИ»
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
|