Система команд микропроцессора КР580вм80а на базе микро-ЭВМ "Электроника 580". Технические характеристики микро-ЭВМ, страница 12

При выполнении команды «инверсия» над аккумулятором осуществляется поразрядное инвертирование содержимого аккумулятора, т. е. каждый бит, имевший значение логической 1, принимает значение логического 0 и наоборот, при этом формируется обратный код (дополнение до 1) слова данных. Это однобайтовая команда, выполняемая за 4 машинных такта. При ее выполнении значения разрядов слова состояния не изменяются.

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

Содержимое аккумулятора

1001 0110

Результат (аккумулятор)

0110 1001

Часто возникает необходимость получения дополнительного кода (дополнения до 2). Его можно сформировать путем образования обратного кода и последующего положительного приращения содержимого аккумулятора.

5.2.3. Команды сравнения

Часто возникает ситуация, когда требуется сравнить два двоичных числа.

Сравнить два двоичных числа можно при помощи команды «вычитание».Для этого слово-маска вычитается из данных, находящихся в аккумуляторе. Если эти два слова данных равны, устанавливается в 1 разряд нулевого результата в регистре состояния. Если значение данных в аккумуляторе меньше, чем значение эталонных данных, то в 1 устанавливается разряд переноса, так как имеет место заем. Если значение данных в аккумуляторе больше значения эталонных данных, то ни один из разрядов регистра состояния не устанавливается в 1.

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

От этого недостатка свободна команда «сравнение». Выполнение этой команды аналогично выполнению команды «вычитание», однако ее результат не загружается в аккумулятор. Хотя по окончании операции исходные данные в аккумуляторе не изменяются, разрядам слова регистра состояния, присваиваются значения, соответствующие особенностям полученного результата:

- флаг нуля (Z) устанавливается, если содержимое регистра или байта данных совпадает с содержимым аккумулятора;

- флаги знака (S) и переноса (С) устанавливаются, если содержимое регистра или байта данных больше содержимого аккумулятора;

- флаг вспомогательного переноса (АС) устанавливается, если содержимое младших четырех разрядов регистра или байта данных больше содержимого соответствующих разрядов аккумулятора;

- флаг четности (Р) устанавливается если байт разности между содержимым аккумулятора и содержимым регистра или байта данных содержит четное число единиц.

Существует три вида команд сравнения:

Сравнение регистра с аккумулятором                       CMP r

Сравнение косвенно адресуемой памяти с

аккумулятором                                                                        CMP М

Сравнение непосредственных данных с

аккумулятором                                                                        CPI, данные

5.2.4. Команды циклического сдвига

Команды «циклический сдвиг» 1-байтовые. При выполнении данных операций содержимое флагов регистра состояния не изменяется за исключением флага переноса. Флаг переноса участвует в выполнении этих операций, и его значение изменяется по мере передачи данных в него и из него.

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

Циклический сдвиг аккумулятора влево                  RLС

Циклический сдвиг аккумулятора вправо                RRC

Циклический сдвиг аккумулятора влево

через бит переноса                                                                   RAL

Циклический сдвиг аккумулятора вправо

через бит переноса                                                                   RAR

При выполнении команды «циклический сдвиг аккумулятора влево» содержимое старшего разряда аккумулятора передается в его младший разряд и в разряд переноса (С) регистра состояния. Содержимое каждого разряда аккумулятора перемещается в соседний, старший разряд.