Исследование однокристального микропроцессора с фиксированным списком команд. Практическое ознакомление с организацией микропроцессорных систем на основе однокристальных микропроцессоров и приобретение навыков программирования микропроцессоров указанного типа, страница 4

2.  Слагаемые: X=031 и Y=030. 0318=1910=000110012, 0308=1810=000110002

В данном случае понадобилась десятичная коррекция, так как при сложении произошел перенос из младшего полубайта. Коррекция осуществляется путём прибавления к этому полубайту 6. Результат 001101112= 678=3710 , что соответствует результату, полученному при выполнении программы.

3.  Слагаемые: X=062 и Y=124. 0628=3210=001100102, 1248=5410=010101002

В данном случае коррекция не потребуется. Результат 100001102= 2068=8610 , что соответствует результату, полученному при выполнении программы.

Вывод: Десятичная коррекция применяется при сложении чисел в двоично-десятичном формате, когда происходит перенос из полубайта соответствующего одной десятичной цифре или значение полубайта превышает 9, и заключается в том, что к полубайту, отвечающему одному из двух условий, прибавляется 6.

Программа 3.3

Программа реализует вычитание двоично-десятичных чисел.

Адрес

Команда

Мнемоника

Комментарий

000

041

LXI H

Загрузка адреса в память

001

200

B2

младший байт адреса

002

000

B3

старший байт адреса

003

006

MVI B

Загрузка вычитаемого в регистр B

004

031

B2

005

076

MVI A

Загрузка 9910 в аккумулятор для получения 

006

231

B2

дополнительного кода

007

220

SUB B

N=99-N0, N0 – уменьшаемое

010

074

INR A

Доп. код = N+1

011

107

MOV B,A

Запись доп. кода 19 в регистр B

012

076

MVI A

Загрузка уменьшаемого в аккумулятор

013

066

B2

014

200

ADD B

Сложение в доп. кодах

015

047

DAA

Десятичная коррекция

016

167

MOV M,A

Запись результата

017

166

HLT

Останов

Результат вычитания 19 из 36 – 17, что совпадает с результатом программы.

Программа 3.4

Программа реализует сложение двух 16-разрядных двоичных чисел.

Адрес

Команда

Мнемоника

Комментарии

000

001

LXI B

Загрузка регистровой пары B

001

377

B2

B2 -> (С)

002

000

B3

B3 -> (B)

003

021

LXI D

Загрузка регистровой пары D

004

001

B2

B2 -> (E)

005

001

B3

B3 -> (D)

006

173

MOV A, E

Копирование значение E в А

007

201

ADD C

Сложение А с С, с учётом переноса

010

062

STA

Запоминание А (прямое)

011

200

B2

Мл. байт адреса

012

000

B3

Ст. байт адреса

013

172

MOV A, D

Копирование значения D в A

014

210

ADC B

Сложение с переносом содержимого А и B

015

062

STA

Запоминание А (прямое)

016

201

B2

Мл. байт адреса

017

000

B3

Ст. байт адреса

020

166

HLT

Останов