Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архит_ЭВМ_лекции.doc
Скачиваний:
99
Добавлен:
04.06.2015
Размер:
19.16 Mб
Скачать

Программирование микропроцессора Состав команд арифметических действий

ADI–C6 – сложить аккумулятор с данными.

ADDL– 85 – сложить содержимое регистраLс содержимым аккумулятора.

ADDH– 84 – сложить содержимое регистраHс содержимым аккумулятора.

ADDМ – 86 – сложить содержимое аккумулятора с содержимым ячейки памяти, на которую указывает пара регистровHL.

SUI– Ø6 – вычесть данные из аккумулятора.

SUBL– 95 – вычесть содержимое регистраLиз содержимого аккумулятора.

SUBH– 94 – вычесть из содержимого регистра Н в аккумулятор.

SUBМ – вычесть данные, расположенные по адресу, на которую указывает пара регистровHL, из аккумулятора.

INRA– 3C– к содержимому аккумулятора +1.

INXH– 23 – инкремент пары регистровHL.

DCRA– 3D– декрементировать (- 1) аккумулятор.

DCXH– 2B– декрементировать пару регистровHL.

CPI–FE– сравнить содержимое аккумулятора с данными (в следующей ячейке памяти).

CMPL–BD– сравнить содержимое аккумулятора с содержимым регистраL.

CMPH– сравнить содержимое аккумулятора с содержимым регистраH.

CMPM– сравнить аккумулятор с ячейкой памяти, на которую указывает пара регистровHL.

Содержит команды сложить, вычесть, инкрементировать, декрементировать и сравнить.

Каждая команда точно оговаривает различные источники другого слагаемого.

Команда ADI– это команда сложить непосредственно, она является двухбайтовой. Ее формат (код операции С6) содержится в первом байте команды, а непосредственно за ним, во втором байте, находятся данные для сложения с содержимым аккумулятора.

Команда ADDL– содержимое аккумулятора (OF) складывается с содержимым регистраL(01). Полученная в результате выполнения команды сумма (10) помещается в аккумулятор.

Команда ADDH– выполняется так же.

Команда ADDМ – однобайтовая команда – сложить с косвенным адресом. Адрес второго слагаемого задан в более сложной форме с использованием так называемого способа косвенной регистровой адресации. При такой адресации пара регистровHLуказывает 16-тиразрядный адрес памяти, где хранится второе слагаемое.

Команда вычитания SUI.

Рассмотрим, например, 00001001 – 00000001 → Ø9Н – Ø1Н.

Эта операция выполняется следующим образом: осуществляется сложение первого числа и второго, представленного в дополнительном коде.

Дополнительный код FFвторого числа складывается с первым числом, что дает сумму 100001000. В старшем девятом бите суммы единица является переполнением и не принадлежит разности 00001000. МП использует это переполнение для установления индикатора переносаCYв регистре состояния. Вычитая, МП инвертирует переполнение, и результат становится содержимым индикатора переносаCY.

Рассмотрим другой пример, когда уменьшаемое меньше вычитаемого: Ø5 – Ø6 = FF= -1(10)

Результат вычитания представлен в дополнительном коде десятичного числа (-1). Сложение в этом случае не вызывает переполнения, т.е. девятый бит равен нулю. Этот бит инвертируется, что дает 1 в индикаторе переноса CY. Когда индикаторCYустанавливается в 1, после вычитания, это означает, что число, содержащееся в аккумуляторе, меньше числа в памяти или регистре. Иначе, индикатор переноса равен 1, указывает на то, что число в аккумуляторе после того, как было выполнено вычитание, является дополнительным кодом, представляя отрицательное число.

Допустим, первое слагаемое 5 находится в аккумуляторе, а второе слагаемое находится в регистре L.

Команда сравнение (СМР) – вычитает содержимое регистра памяти из содержимого аккумулятора, но при этом не изменяет содержимого ни того, ни другого. Индикаторы регистра состояния подвержены воздействию команд сравнения.

Например, сравнить содержимое аккумулятора с содержимым регистра L.

Содержимое регистра Lпереводим в дополнительный код.

Первое число и дополнительный код второго числа складываются, что дает результат 10000000, затем МП проверяет равенство нулю восьми младших разрядов. Индикатор нуля Zв примере принимает значение 1, переполнение 1 инвертируется и индикаторCYустанавливается в ноль. Сброшенный индикаторCYозначает, что содержимое аккумулятора больше либо равно содержимому регистраL.