Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MP_practicum.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
924.67 Кб
Скачать

1.1.2. Команды ввода-вывода

Таких команд всего две. Их мнемонические коды и символическое описание имеют следующий вид: ; , где: N – номер порта, а (N) – число, хранящееся в регистре порта. Особенности данных команд и соответствующие возможности микропроцессора К580ВМ80А таковы, что по одной команде может быть введено или выведено только одно слово. Следовательно, при вводе или выводе группы слов, например, при обмене данными с магнитными дисками, соответствующая команда ввода или вывода должна быть повторена столько раз, сколько слов (байт) содержит группа. Более того, перед каждым повторением операции ввода или вывода необходимо обеспечить, чтобы соответствующим образом изменить содержимое регистра-аккумулятора А. При вводе группы слов передачи содержимого регистра А в память будут выполняться несколько раз подряд. Следовательно, необходимо обеспечить также и формирование адресов ячеек памяти. Например, некоторый начальный адрес нужно всякий раз увеличивать на единицу. Иными словами, при операциях ввода-вывода группы слов ввод или вывод отдельного байта потребует выполнения не одной, а нескольких команд.

1.1.3. Команды арифметических и логических операций

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

;

;

.

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

Команда десятичной коррекции DAA используется при выполнении арифметических операций сложения и вычитания над десятичными числами [1, 2, 3].

Подгруппу команд с одним операндом завершают четыре команды, символические описания которых имеют вид:

(increment register);

(decrement register);

(increment register pair);

(decrement register pair).

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

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

(add register);

;

(subtract register);

.

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

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

;

;

.

Первая из них – команда, предусматривающая выполнение логического умножения (операция И) над содержимым регистра-аккумулятора A и содержимым одного из РОН. Вторая команда реализует логическое сложение (операция ИЛИ) над теми же операндами. Последняя команда осуществляет суммирование по модулю два (исключающее ИЛИ).

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

;

;

;

;

;

;

.

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

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

Последнюю подгруппу арифметических и логических команд составляют четыре команды сдвига: RAR (rotate accumulator right through carry), RRC (rotate right), RAL (rotate accumulator left through carry) и RLC (rotate accumulator left), предусматривающие выполнение операции сдвига содержимого регистра-аккумулятора. В каждом из четырех случаев логическое значение данного разряда заменяется логическим значением соседнего разряда.

При командах RAR и RRC подобная замена производится слева направо, то есть осуществляется сдвиг вправо. При этом признаку переноса С присваивается логическое значение крайнего правого (старшего) разряда регистра-аккумулятора. При выполнении сдвига вправо в общем случае непонятно, каким должно стать логическое значение крайнего левого (младшего) разряда регистра. При выполнении команды RAR крайнему левому разряду регистра присваивается логическое значение признака переноса С, при выполнении команды RRC – то логическое значение, которое до выполнения операции имел крайний правый разряд. Подобная операция известна также под названием циклического сдвига. По командам RAL и RLC выполняются операции сдвига, аналогичные соответственно двум рассмотренным командам, за тем исключением, что сдвиг производится влево. При выполнении операции сдвига значения всех признаков, кроме признака переноса С, остаются неизменными.

Следует отметить, что микропроцессор К580ВМ80А выполняет всего две арифметические операции, то есть операции сложения и вычитания. Однако, этого вполне достаточно для выполнения любых вычислений, поскольку, например, операция умножения выполняется как ряд последовательных сложений, операция возведения в степень может быть выполнена как ряд последовательных умножений и так далее. Операции сложения и вычитания могут широко использоваться также при реализации, так называемых, невычислительных алгоритмов. Например, с помощью операции вычитания, как правило, производят простое сравнение двух чисел.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]