0_МПиИСТС_Все главы. Микропроцессоры и интерфейсные средства транспортных средств
Скачать 10.01 Mb.
|
4.7 Арифметические и логические операцииПри выполнении арифметических и логических операций, когда операнды однобайтовые, один из операндов всегда находится в аккумуляторе, а второй находится в одном из регистров A, B, C, D ,E, H, L или M. При непосредственной адресации второй операнд приводится во втором байте команды. Результат выполнения операции записывается в аккумулятор. При этом прежнее содержимое аккумулятора теряется. Микропроцессор содержит ограниченное число арифметических и логических команд: сложение, вычитание, логическое сложение и логическое умножение, исключающее ИЛИ, сравнение и дополнение. Более сложные операции над числовыми данными реализуются программно. 4.7.1 Арифметические операции над (A) и (r)а) Сложение
б) Сложение с переносом
в) Вычитание
г) Вычитание с переносом
В рассмотренных командах производятся арифметические действия над содержимым двух регистров, один из которых (или оба) - аккумулятор. В результате выполнения операции прежнее содержимое аккумулятора замещается суммой или разностью, старое содержимое аккумулятора теряется. Применение операций с переносом позволяет обрабатывать не только байтовые числа, но и многобайтовые. При выполнении команд сложения все триггеры признаков устанавливаются всегда в соответствии с результатом. При выполнении команд вычитания 3 флага из 5 устанавливаются всегда одинаковым образом, независимо от того сводится вычитание к сложению или нет. Это TS, TZ ,TP; флаги TC и Th ведут себя иначе. Изменение Th определяется при преобразовании вычитания в сложение (путем смены знака вычитаемого и преобразования значения в дополнительный код). Флаг TC=1 если код уменьшаемого меньше кода вычитаемого, т.е. имеет место заем. Применение операций с переносом позволяет обрабатывать не только байтовые числа, но и многобайтовые. Примеры: 015B) ADD M
1A20) ADC E
00B3) ADC C
Рассмотренные команды являются однобайтовыми, выполняются за один цикл (4 такта); если операнд хранится в памяти (М), то операция выполняется за два цикла (7 тактов). При выполнении команд меняется содержимое всех триггеров регистра признаков. 1A30) SUB D
1A40) SBB B
Рассмотрим несколько особенных примеров. 082А) SBB H
Особенностью данной команды является то, что триггеры признаков TC и TH устанавливаются так, как это происходит при выполнении этой команды в два этапа: 1) (A) - TC = 60 – 1= 5F 2) ((A) - TC ) – H = 5F – FF = 60; и признаки переноса и полупереноса (TC и TH) устанавливаются в соотвествии со вторым этапом, т.е. TC = 1, TH = 1. 0903) АDD L
0A09) SUB D
Особенностью двух последних команд является то, что их результаты имеют смысл только в тех случаях, когда обрабатываемые коды являются кодами чисел без знака. 4.7.2 Арифметические операции с непосредственной адресациейа) Сложение со вторым байтом
б) Сложение со вторым байтом и переносом
в) Вычитание второго байта
г) Вычитание второго байта с переносом
При выполнении этой группы команд второй операнд приводится непосредственно в команде во втором ее байте. Команды являются двухбайтовыми, выполняются за два цикла (7 тактов). Триггеры признаков устанавливаются в соответствии с результатом выполненной операции. В результате выполнения операции изменяется содержимое аккумулятора, старое содержимое аккумулятора теряется. Примеры: 12A6) ADI 47
0802) ACI A7
0804) SUI FD
0806) SBI 0A
4.7.3 Сложение содержимого пар регистров
При ri+1=111 - HL (HL) + (SP) При выполнении этой команды содержимое пары регистров HL складывается с содержимым пар ВС, DE или с содержимым указателя стека (SP). В коде команд приводится код младшего регистра пары (С или Е). В результате выполнения операции устанавливается в соответствующее состояние только триггер переноса, который принимает значение в соответствии с переносом из старшего бита старшего регистра. Команда выполняется за три цикла (10 тактов). Пример: 1FC1) DAD D
4.7.4 Логические операции над (А) и (r)а) Логическая операция "И"
Эта операция, как и все остальные логические операции, является побитовой. Можно считать, что для обработки битов каждого разряда используется одна двухвходовая логическая схема, на один вход которой подается значение бита аккумулятора, а на другой - значение соответствующего бита слова, расположенного в памяти (М) или одном из регистров (A, B, C, D, E, H ,L ). В микропроцессоре предусмотрено восемь таких двухвходовых схем - по одной для каждого разряда микропроцессора. После выполнения операции результат запишется в аккумулятор, а старое содержимое аккумулятора потеряется. В результате выполнения операции логического умножения все триггеры регистра признаков кроме триггера переноса (Тс) установятся в соответствии с полученным результатом; триггер переноса установится в состояние "0".Триггер полупереноса (Тн) принимает значение разряда А3 результата. На выполнение операции затрачивается один цикл (4 такта). Если ri =М, то число циклов равно 2 (7 тактов) Пример: 0800) ANA C
б) "Исключающее ИЛИ"
Эта операция, как и предыдущая, является побитовой; для ее исполнения используются те же регистры. После выполнения команды результат записывается в аккумулятор на место первого операнда. Триггеры признаков, кроме триггеров переноса и полупереноса, устанавливаются в соответствии с результатом. Триггеры Тс и Тн принимают значение "0". Операция выполняется за 1/2 цикла (4/7 ) тактов. Пример: 0800) XRA C
в) Логическая операция "ИЛИ"
Все сказанное для команды б) справедливо и для этой команды. Пример: 0800) ORA C
4.7.5 Логические операции с непосредственной адресацией
б) Логическая операция "исключающее ИЛИ" со вторым байтом.
в) Логическая операция "ИЛИ" со вторым байтом
Все сказанное для логических операций над А и ri (п. 4) справедливо и для команд данной группы. Отличие состоит лишь в том, что второй операнд приводится непосредственно в команде во втором ее байте. Каждая операция выполняется за 2 машинных цикла (7 тактов). Примеры: 0900) XRI 2B
0800) ANI 98
0802) ORI FE
4.7.6 Операции сравненияа) Сравнение (А) с (ri)
Пример: 0100) CMP D
б) Сравнение (А) со вторым байтом
Пример: 0125) CPI 25
Выполнение команд этой группы аналогично выполнению команды "вычитание", но ее результат не загружается в аккумулятор. Хотя по окончании операции исходные данные в аккумуляторе не изменяются, разрядам Z, S и С регистра признаков присваиваются значения в соответствии с полученным результатом. В качестве регистров ri в команде а) могут быть выбраны A, B, C, D, E, H, L, M. С помощью этой команды можно производить сравнение двух слов на "больше", "меньше", "равно". На выполнение команды а) затрачивается 1 машинный цикл (4такта) при работе с регистрами или 2 цикла (7 тактов), если данные находятся в памяти (М) по адресу HL . команда б) выполняется за 2 цикла (7 тактов). 4.7.7 Операции циклического сдвига (а).а) Сдвиг аккумулятора влево без переноса
б) Сдвиг аккумулятора вправо без переноса
в) Сдвиг аккумулятора влево с переносом
г) Сдвиг аккумулятора вправо с переносом
Командой этой группы все данные, находящиеся в аккумуляторе и триггере переноса сдвигаются на одну позицию. При этом в командах а) и б) значение выдвигаемого разряда А7 или А0 передается в разряд соответственно А0 или А7 и запоминается в триггере переноса С, а в командах в) и г) триггер переноса используется как дополнительный девятый разряд регистра. Каждая команда выполняется в течение одного машинного цикла (4 такта). В результате выполнения команды изменяется значение только триггера переноса С, а другие признаки остаются без изменения. Примеры: 0800) RLC
0801) RRC
0802) RAL
0803) RAR
4.7.8 Дополнение аккумулятора
С помощью этой команды производится инвертирование всех разрядов аккумулятора. Команда выполняется в течение одного цикла (4 такта). Значение триггеров признаков при этом не изменяется. Пример: 0823) CMA
|