Изучение микропроцессора серии К580, страница 5

Исходные данные:

Адрес              Содержимое

000  200          135         (93)

000  201          252         (170)

Результат выполнения программы:

Адрес              Содержимое

000  200          115         (77)

Результат выполнения программы правильный.

Программа 3.2

Программа 3.2. реализует сложение двоично-десятичных чисел, одно из которых содержится в аккумуляторе. Сложение двоично-десятичных чисел производится аналогично обычному сложению, но после команды ADD стоит дополнительно команда DAA — команда двоично-десятичной коррекции.

Таблица 5.

Адреса (L)

Команды

Мнемоника команд

Комментарии

000

041

LXI H

;Загрузка начального адреса памяти:

001

200

B2

;000 200

002

000

B3

003

176

MOV A,M

;Перемещение из памяти в аккумулятор

004

043

INX H

; Формирование следующего адреса памяти

005

206

ADD M

;(A)+(M)->(A)

006

047

DAA

;Двоично-десятичная коррекция

007

167

MOV M,A

;Сохранение результата в памяти

010

166

HLT

;Останов

Исходные данные:

Адрес              Содержимое

000  200          044 (двоично-десятичное 24)       

000  201          111  (двоично-десятичное 49)     

Результат выполнения программы:

Адрес              Содержимое

000  201          163 (двоично-десятичное число 73)

Результат выполнения программы правильный.

Программа 3.3

Программа 3.3. реализует вычитание двоично-десятичных чисел. Для вычитания двоично-десятичных чисел необходимо производить преобразование вычитаемого в дополнительный код, потому что в противном случае команда DAA, применяемая после вычитания чисел, приводит к некорректным результатам.

Таблица 6.

Адреса (L)

Команды

Мнемоника команд

Комментарии

000

041

LXI H

;Загрузка начального адреса памяти:

001

200

B2

;000 200

002

000

B3

003

076

MVI A

;Перемещение двоично-десятичного числа 99 в аккумулятор: 231->A

004

231

B2

005

226

SUB M

;(A)-(M)->(A)

006

074

INR A

;Инкрементирование содержимого аккумулятора

007

043

INX H

; Формирование следующего адреса памяти

010

206

ADD M

;(A)+(M)->(A)

011

047

DDA

;Двоично-десятичная коррекция

012

043

INX H

; Формирование следующего адреса памяти

013

167

MOV M, A

;Перемещение из аккумулятора в память

014

166

HLT

;Останов