Исследование однокристального микропроцессора с фиксированным списком команд, страница 5

DAA – десятичная коррекция.

В результате выполнения программы в памяти по адресу L = 200 записан результат сложения: 110 + 101 = 211 (01 001 000 + 01 000 001 = 10 001 001; 48 + 41 = 89).

Программа 3.3: вычитание двоично-десятичных чисел

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

10 010 110

+

00 010 111

01 111 001, т.е. 962/10 – 172/10 = 792/10

Адрес

Код команды

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

Комментарии

L = 000

001

002

041

200

000

LXI H

B2

B3

003

004

006

10 010 110

MVI B

B2

005

006

016

00 010 111

MVI C

B2

007

010

076

232

MVI A

B2

записываем в аккумулятор 100

011

221

SUB C

ищем дополнительный код

012

200

ADD B

013

047

DAA

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

014

167

MOV M, A

015

166

HLT

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

Адрес

Код команды

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

Комментарии

L = 000

001

002

001

11 010 001

00 001 000

LXI B

B2

B3

непосредственная загрузка пары регистров

003

004

005

021

01 011 100

00 000 000

LXI D

B2

B3

006

171

MOV A, C

младшие биты:

пересылка данных из RC в Акк

007

203

ADD E

сложение содержимого регистра и Акк

010

157

MOV L, A

пересылка из Акк в RL

011

170

MOV A, B

старшие биты:

пересылка данных из RB в Акк

012

212

ADC D

сложение Акк с RD с переносом

013

147

MOV H, A

пересылка из Акк в RН

014

015

016

042

200

000

SHLD

B2

B3

прямое запоминание регистровой пары

017

166

HLT

останов