Во всех командах, связанных с преобразованием (арифметическим и логическим) данных, в качестве подразумеваемого и потому неадресуемого операнда используется содержимое важнейшего внутреннего регистра микропроцессора-аккумулятора (А - регистра). Результат операции обычно также загружается в аккумулятор. Таким образом, аккумулятор является узловой точкой всех преобразований данных и основным рабочим регистром микропроцессора. Он выполнен как регистр-фиксатор (защелка), вход которого связан с выходом АЛУ, а выход подключается к одному из входов АЛУ.
Арифметические операции. Основная арифметическая операция - это сложение двоичных чисел. Кроме основной операции, имеется ряд команд, позволяющих выполнять вычисления с повышенной точностью. При этом, выполняя сложение, надо учитывать бит переноса, полученный в младших разрядах, а при выполнении вычитания-заём (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. Команды с непосредственным