Команды обработки данных

Во всех командах, связанных с преобразованием (арифметическим и логическим) данных, в качестве подразумеваемого и потому неадресуемого операнда используется содержимое важнейшего внутреннего регистра микропроцессора-аккумулятора (А - регистра). Результат операции обычно также загружается в аккумулятор. Таким образом, аккумулятор является узловой точкой всех преобразований данных и основным рабочим регистром микропроцессора. Он выполнен как регистр-фиксатор (защелка), вход которого связан с выходом АЛУ, а выход подключается к одному из входов АЛУ.

Арифметические операции. Основная арифметическая операция - это сложение двоичных чисел. Кроме основной операции, имеется ряд команд, позволяющих выполнять вычисления с повышенной точностью. При этом, выполняя сложение, надо учитывать бит переноса, полученный в младших разрядах, а при выполнении вычитания-заём (borrow), сделанный в старших разрядах. Наличие переноса или заема указывается третьей буквой мнемонического сокращения (табл. 2.1).

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

Все команды арифметических операций, включая ADC R и SBB R, выполняются между данными в аккумуляторе и содержимым регистра или ячейки памяти, указанными в операндной зоне команды. Например, ADD r означает (А)+(r) →(A),содержимое А сложить с содержимым R, результат поместить в А.

Логические операции. Основные функции и их мнемонические сокращения приведены в табл. 2.1. Логические операции являются поразрядными, т.е. выполняются независимо друг от друга для всех восьми бит операндов. Первый неадресуемый операнд находится в аккумуляторе, там же остается результат операции. По результату операции модифицируются все триггеры состояния (флаги) кроме триггера переноса, который никогда не может быть установлен в единицу, поэтому принудительно сбрасывается.

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

Функция Перевод Мнемоника
Сложить Add ADD R
Сложить с учетом переноса Add+Carry ADC R
Вычесть Subtract SUB R
Вычесть с учетом займа Subtract-Borrow SBB R
Логическое И AND ANA R
Исключающее.xf.ott ИЛИ Exclusive OR XRA R
Логическое ИЛИ OR ORA R
Сравнить Compare CMP R

При выполнении команды ANA C (А) Λ (C) → А производиться поразрядная конъюнкция операндов (логическое ИЛИ): над содержимым регистра А и регистра С.

Данная команда часто применяется для проверки значения определенного слова в аккумуляторе с помощью другого слова - маски. Если, например, необходимо проверить состояние второго бита, то маска должна иметь вид 00000100. После выполнения команды ANA R по триггеру состояния Z можно судить о состоянии этого бита. Кроме того, с помощью команды ANA R, используя слово-маску, можно сбрасывать в 0 определенные биты слова в аккумуляторе, оставляя другие неизмененными.

Команда ORA r (A) V (r) → A, осуществляет поразрядную дизъюнкцию операндов (логическое ИЛИ) над содержимым регистра А и регистра R.

Эта команда применяется для установки определенных бит слова в аккумуляторе с помощью слова-маски. Она применяется также для сбрасывания одного слова из полей других слов. Например,

0 0 0 0 X3 X2 X1 X0

V

Y7 Y6 Y5 Y4 0 0 0 0

Y7 Y6 Y5 Y4 X3 X2 X1 X0

Такая операция часто называется «упаковкой» данных.

Команда исключающее ИЛИ (XRA R) (A) V (r) → A, производит поразрядное двоичное сложение операндов. Она применяется для инвертирования определенных битов с помощью слова-маски на основе тождества 1V X=X. Другое применение команды XRA R связано с проверкой слова на абсолютное равенство. В единственном случае, при совпадении операндов поразрядно , результат операции содержит нули во всех разрядах (X + Х=0), о чем свидетельствует значение триггера состояния Z = 1.

Команда сравнения СМР r производит вычитание значения адресуемого операнда из содержимого аккумулятора и модифицирует по результату значения всех триггеров состояния, но при этом не изменяет содержимого аккумулятора. Наличие в системе команд такого неразрушаемого сравнения упрощает, например, поиск в массиве заданного слова. Значение отыскиваемого слова загружается в аккумулятор, базовый адрес массива загружается в регистры HL, а затем с помощью команды СМР М элементы массива сравниваются со словом–эталоном. Факт равенства фиксируется по значению триггера Z = 1.

К логическим операциям можно отнести также однобайтные команды инвертирования (в английском буквально «дополнения») аккумулятора Complement Accumulator (СМА), иначе, (А)→ А, установки в 1 триггера переноса Set Carry (STC), или CY→ 1, и инвертирования (дополнения) триггера переноса Complement Carry (CMC): (CY)→ CY

Команды с непосредственным представлением операнда. с непосредственным представлением операнда, могут быть как арифметические, так и логические команды, все они имеют двухбайтный формат: вторым байтом является сам операнд. В мнемонике команд добавляется буква I (табл.2.2).

Таблица 2.2. Команды с непосредственным


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: