Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 4 - V-пр+.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
415.74 Кб
Скачать

4.3. Состав команд арифметических действий

Команды арифметических действий: сложить, вычесть, сравнить, инкре­ментировать и декрементировать приведены в табл. 4.1. Из таблицы следует, что существует четыре типа команды сложения, в которых одно из слагаемых нахо­дится в аккумуляторе (регистре А), а второе слагаемое может быть в регистре L или Н, или в данных, извлеченных из программной памяти, это команды АDD, АDI, АDС, ACI.

Рассмотрим команду АDD R - сложить содержимое аккумулятора А и од­ного из регистров РОН (В, С, Д, Е, Н, L). Символика этих команд (А)+(К)→А. Команды с регистровой адресацией, однобайтовые, формат их КОП от 80 до 85. Ко­манда АDD R выполняется по схеме, приведенной на рис. 4.3, а. Содержимое ак­кумулятора (0000 1000) складывается с содержимым одного из регистров РОН, например (0000 0010), получающаяся в результате сложения сумма (0000 1010) помещается в аккумулятор. Следующая команда АDD М - однобайтовая команда с косвенно реги­стровой адресацией, ее символика (А) + (М) → А. Адрес второго операнда здесь задан косвенно, т. е. пара регистров НL указывает 16-разрядный адрес программной памяти, т. е. LОС (от Location - место расположения), (см. рис. 4.3, б). Содержимое LОС (0000 0011) суммируется с содержимым А (0110 0100), а сумма (0110 0111) помещена в аккумулятор. Команды косвенного сложения используют в качестве указателя адреса 16-разрядный регистр (обычно пару HL), по­этому часто символика команды записывается так (A) + ((Н)( L))→ А, где двой­ная скобка (( )) указывает команду косвенной адресации.

Рассмотрим двухбайтовую команду ADI b1 - сложить с непосредствен­ным операндом (см. рис. 4.3, в). Ее формат КOП(С6) содержится в первом байте команды, непосредственно за ним, во втором байте (b2) находятся данные для сложения с содержимым A . Команда АDI вы­полняется по схеме, приведенной на рис. 4.3, в, где содержимое А (0000 1111) сум­мируется со вторым байтом (b2) (0001 0000), а сумма (0001 1111) помещается в аккумулятор.

При сложении двухбайтных и больших чисел возможен перенос старшего бита результата, что будет фиксироваться битом СY регистра состояния F0, т. е. СY=1. Эта единица должна суммироваться с младшими битами следующего байта. При этом берутся команды сложения АDC R, АDС М и ADI b2.

Рис. 4.3. Арифметические действия

Команд вычитания у МП КР580ВМ80 (см. табл. 4.1) четыре типа -SUВ, SUI, SВВ и SBI. B силу особенностей АЛУ МП не обладает возможностями прямого вычитания, оно осуществляется сложением с представлением вычитаемого в дополнительном коде.

При сложении двоично-десятичных чисел программа соcтавляется аналогично программе сложения многобайтных двоичных чисел, разница лишь в том, что после команды АDС М должна следовать команда десятичной коррекции DАА. При выполнении команды DАА к содержащемуся в аккумуляторе десятичному числу 1010 (10102) добавляется цифра 610 (1102), тем самым лишние места комбинаций автоматически исключаются.

MП КР580 имеет два типа команд сравнения двух операндов CPI b2 и CMP R. Команда CPI b2 имеет непосредственную адресацию, является двухбайтовой и сравнивает второй байт b2 команды с содержимым аккумулятора. Команд CMP R восемь, они позволяют сравнивать содержимое аккумулятора А с содержимым регистров В, С, Д, Е, Н, L, М и А. Адресация команд CMP B, С, Д, Е, Н, L, А регистровая , а команды СМР M - косвенно-регистровая. Их символика (А) - b2 и (А) - (R).

Результаты операций сравнений СMР и CPI определяются по значениям признаков Z и СY, как показано в табл. 4.3.

Операция сравнения Таблица 4.3

Z

CY

Результат

0

0

(А) > ( R ) или b2

0

1

(А) < ( R ) или b2

1

0

(А) = ( R ) или b2

Все рассмотренные команды арифметических операций имели один операнд в аккумуляторе. Рассмотрим команды арифметических операций с операндами, расположенными в РOH.

Суммирование 16-разрядных чисел обеспечивают четыре команды DАD. Один из операндов располагается в регистровой паре Н, куда после сложения записывается сумма. Второй операнд находится в регистровой паре ВС при команде DАD В, или DЕ при команде DАD D , или в HL при команде DАD Н, или в SР при команде DАD SP. Символика команд (НL) + (RР)-> HL.

К арифметическим командам относят семь команд INR P, предусматри- вающих прибавление единицы к содержимому регистров В, С, D, Е, Н, L, А; одну команду INR M (прибавления единицы в байт памяти) и четырех команд INX RP, предусматривающих прибавление единицы к регистровым парам В, С (IN ХB), D, E (IN XD), Н, L (IN XН) и к указателю стека SР (IN XS Р). B MП имеется аналогичный инкременту набор 12 команд декремента, семь из которых DСR R предусматривают вычитание единицы из регистров В, С, Д, Е, Н, L и А (например DСR В), одной команды DСR М (вычитание единицы из байта памяти) и 4-х команд DСХ КP (вычитание единицы из содержимого регистровой пары В, С (DСХ В), D, Е (DСХ D), H, L (DСХ Н) и из содержимого указателя стека SР (DCХ SР).

При выполнении арифметических операций применятся команда сдвигов в аккумулятор на 1 разряд. Команды RRC и RLС обеспечивают циклический сдвиг байта в аккумуляторе влево и вправо с дублированием вытесняемого разряда в бите СY регистpa F, а команды RАL и RAR циклический сдвиг влево и вправо 9-разрядного слова, где девятым разрядом является бит СY регистра F.

При сложении двоично-десятичных чисел программа соcтавляется аналогично программе сложения многобайтных двоичных чисел, разница лишь в том, что после команды АDС М должна следовать команда десятичной коррекции DАА. При выполнении команды DАА к содержащемуся в аккумуляторе десятичному числу 1010 (10102) добавляется цифра 610 (1102), тем самым лишние места комбинаций автоматически исключаются.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]