Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Группа команд арифметических и поразрядных логических операций



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

Двухбитовый код 10, идентифицирующий группу команд арифметических и поразрядных логических операций, не позволяет однозначно определить многообразие операций преобразования данных. Для указания конкретного типа арифметических и поразрядных логических операций в коде команды используется дополнительное поле. Обобщенный код команд указанной группы имеет вид 2XS, где 2 — код команд арифметических и поразрядных логических операций; Х — код типа арифметических и поразрядных логических операций (табл. 2.1); S (SSS) — код регистра источника. Коды (адреса) регистров S указаны в поле адреса регистра регистровой модели МП (рис. 2.2).

Таблица 2.1

Арифметические и логические операции (мнемоника команд и выполняемое действие) Двоичный код Восьмеричный код
Сложение ADD: (A) + (RS) → (A)    
Сложение с переносом ADC: (A) + (RS) + CF → (A)    
Вычитание SUB: (A) - (RS) → (A)    
Вычитание с заемом SBB: (A) – (RS) – CF → (A)    
Логическое И ANA: (A) ^ (RS) → (A)    
Исключающее ИЛИ XRA: (A) (RS) → (A)    
Логическое ИЛИ ORA: (A) (RS) → (A)    
Сравнение CMP: (A) – (RS)    

Вычислительные возможности микропроцессора ограничены командами сложения ADD R и вычитания SUB R 8-битных операндов. Операции умножения и деления, а также операции с другими форматами данных должны выполняться с помощью подпрограмм. Во многих применениях 8-разрядной длины слова микропроцессора для точного представления данных недостаточно. Поэтому данные представляют в виде многобайтных чисел. В памяти такие числа хранятся в смежных ячейках и адресуются по младшему байту. Обработку многобайтных чисел выполняют путем последовательной обработки отдельных байтов, используя для этого специальные команды сложения с переносом ADC R и вычитания с заемом SBB R.

В группу арифметических команд входит команда неразрушающего вычитания (арифметического сравнения) СМР R, которая производит вычитание из содержимого аккумулятора значение адресуемого операнда, модифицирует по результату все флаги, но не изменяет содержимое аккумулятора. Команду сравнения удобно использовать, например, при упорядочении заданного массива данных. Базовый адрес массива загружается в регистры HL, первый элемент массива помещается в аккумулятор, а затем с помощью команды СМР М последующие элементы массива сравниваются со значением в аккумуляторе, не изменяя его значения. Результат сравнения фиксируется во флаге переноса С. Перестановки элементов массива (собственно упорядочение) производят в соответствии со значением флага С.

Поразрядные логические операции выполняются с помощью команд ANA R, ORA R, XRA R независимо для всех разрядов операндов. При выполнении этих команд модифицируются все флаги, кроме флага С, который принудительно сбрасывается в 0.

Команду ANA R, осуществляющую поразрядную конъюнкцию операндов (табл. 2.1), применяют для проверки значения определенного бита в байте, содержащемся в аккумуляторе, с помощью другого байта-маски. В частности, если требуется проверить состояние бита А3, то необходимо использовать маску 00001000. О состоянии бита А3 можно судить, проанализировав флаг Z:

Z = 3. Команду ANA R также применяют для сброса определенных бит слова в аккумуляторе. Используемая для этого маска должна содержать 0 в разрядах сбрасываемых бит и 1 в некорректируемых разрядах.

Команда ORA R реализует операцию поразрядной дизъюнкции операндов (табл. 2.1). Эту команду применяют для установки определенных битов байта в аккумуляторе с помощью байта-маски. Другим использованием команды ORA R является упаковка байта в аккумуляторе из полей других байт. Например, результатом операции ORA с операндами 00001Х2Х1Х0 и Y7Y6Y510000 будет упакованный байт Y7Y6Y511Х2Х1Х0.

Команда XRA R (Исключающее ИЛИ) производит операцию поразрядного сложения операндов по mod 2. В соответствии с тождеством 1 X = , используя байт-маску, эту команду удобно использовать для инвертирования определенных бит содержимого в аккумуляторе. Например, для инвертирования битов А2 и А5 маска должна содержать 1 в разрядах 2 и 5 и 0 для неинвертируемых разрядов, т. е. иметь вид 00100100. Другое применение команды XRA связано со сравнением слов на абсолютное равенство. Действительно, после выполнении команды XRA, согласно тождеству Х =0, нулевой результат формируется только при полной идентичности всех разрядов операндов. О равенстве операндов можно судить по значению флага Z.

В дополнение к рассмотренным командам арифметических и поразрядных логических операций, кодируемых выражением 2XS8, МП КР580ВМ80А реализует сравнительно большое число других команд этой группы. Прежде всего, это команды арифметических и логических операций с непосредственными данными, команды инкремента/декремента содержимого регистров, команды сдвиговых операций, арифметические команды, оперирующие 16-битными данными, и некоторые другие.

Двухбайтные команды арифметических и поразрядных логических операций с непосредственной адресацией имеют обобщенный код команд 3X6 В2, где Х — код типа арифметических и поразрядных логических операций (табл. 2.1). Операндами этих команд являются содержимое аккумулятора и второй байт команды В2.

Однобайтные команды инкремента INR R (rr + 1) и декремента DCR R (rr – 1), имеют обобщенный код 0D4 (инкремента) и 0D5 (декремента), где D — код регистра приемника. Они обеспечивают увеличение (инкремент) или уменьшение (декремент) содержимого адресуемого регистра на единицу. Команды инкремента/декремента воздействуют на все флаги, кроме флага переноса С, который не изменяется.

МП КР580ВМ80А реализует арифметическую операцию сложения операндов в упакованном формате двоично-десятичных чисел (две десятичные цифры BCD-формата в байте). Сложение BCD-чисел выполняется в два этапа. Сначала выполняется команда ADD R. При ее выполнении операнды в упакованном двоично-десятичном формате складываются как обычные двоичные числа. Затем с помощью команды DAA производится коррекция в общем случае неправильного результата сложения десятичных чисел. Действие команды DAA следующее. Восьмибитное число результата в аккумуляторе рассматривается как две четырехбитные двоично-десятичные цифры. Коррекция результата суммирования выполняется по правилам:

1. Если значение младших четырех бит больше 9 или признак межтетрадного переноса AC равен 1, то к содержимому аккумулятора прибавляется число 06h, образуя правильное BCD-число в младшей тетраде.

2. Если после этого значение старших четырех бит больше 9 или установлен флаг переноса C, то к содержимому аккумулятора прибавляется число 60h, образуя правильное BCD-число в старшей тетраде. Перенос С, формируемый при выполнении команды DAA, указывает, что сумма двух исходных BCD-чисел больше, чем 99.

К рассматриваемой группе команд арифметических и логических операций также относятся однобайтные команды циклического сдвига вправо и влево. Операндом этих команд является содержимое аккумулятора, в него же помещается и результат. Действие команд сдвига поясняет рис. 2.3. В командах циклического сдвига (команды RRC и RLC) выдвигающийся бит помещается на место освобождающегося и, кроме того, фиксируется во флаге переноса С. В командах циклического сдвига через перенос (команды RAR и RAL) выдвигающийся бит помещается в флаг С, а текущее значение флага С передается в освобождающийся бит. Команды циклического сдвига не изменяют состояние флагов, кроме флага переноса С.

Обобщенный код команд сдвига 0С7, где С — тип команды сдвига:

0 — RLC, 1 — RRC, 2 — RAL, 3 — RAR.

Флаг С Аккумулятор

       
   
 
С


RLC

 
 


С
А0
А1
А2
А3
А4
А5
А6
А7
RAL

         
   
 
 
 
   


C
А0
А1
А2
А3
А4
А5
А6
А7
RRC

           
     
 
 


С
А0
А1
А2
А3
А4
А5
А6
А7
RAR


Рис. 2.3. Команды сдвига





Дата публикования: 2014-11-02; Прочитано: 1052 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...