3.Примеры арифметики с ДД - кодами на основе чисел из таблицы п.2 после их перевода в ДД, Практическая часть - Разработка программ преобразования форматов двоичных данных и сортировок

ДД-код

Константа16

ДД-код

Константа16

1111 1111

FF

0000 0000

00

0011 0101

35

1111 0100

F4

0101 0111

57

1001 1010

9A

1000 1101

8D

0000 0111

07

1000 0000

80

0000 1010

0A

Пример сложения:

80 (1000 0000) + 35 (0011 0101) = 115 (0001 0001 0101)

Пример вычитания:

80 (1000 0000) - 35 (0011 0101) = 45 (0100 0101)

Практическая часть

Блок-схема алгоритма

Листинг программы с комментариями.

Адрес

Машин. код

Метка

Код Ассемблера

Комментарий

4000

31 00 80

LXI SP,8000H

Создание стека программы

4003

06 0A

MVI B,0AH

Установка начальных значений счетчиков цикла

4005

0E 09

L1:

MVI C,09H

4007

21 01 50

LXI H,5001H

Указываем адреса первой пары элементов массива

400A

11 00 50

LXI D,5000H

400D

1A

L2:

LDAX D

Загрузка в аккумулятор элемента массива

400E

BE

CMP M

Сравниваем со следующим элементом массива

400F

DA 18 40

JC L3

Если первый элемент меньше, переход по метке, иначе

4012

C5

PUSH B

Сохраняем счетчики в стек

4013

4E

MOV C, M

Меняем элементы массива местами

4014

77

MOV M, A

4015

79

MOV A, C

4016

12

STAX D

4017

C1

POP B

Восстанавливаем счетчики из стека

4018

23

L3:

INX H

Переход к следующей паре элементов

4019

13

INX D

401A

0D

DCR C

Уменьшаем счетчики и проверяем не закончилась ли сортировка

401B

C2 0D 40

JNZ L2

401E

05

DCR B

401F

C2 05 40

JNZ L1

4022

C3 25 40

JMP KOI

Переход к процедуре формирования кодов КОИ-7

4025

21 00 50

KOI:

LXI H,5000H

Адрес исходного массива

4028

11 00 70

LXI D,7000H

Адрес нового массива

402B

01 0A 00

LXI B,000AH

Инициализация счетчика

402E

7E

A1:

MOV A, M

Загружаем в аккумулятор число

402F

A7

ANA A

Обнуляем флаг CY

4030

1F

RAR

Перемещаем старшую тетраду в правую часть байта

4031

1F

RAR

4032

1F

RAR

4033

1F

RAR

4034

E6 0F

ANI 0FH

Обнуляем старшую тетраду

4036

F6 30

ORI 30H

Записываем в старшую тетраду "3"

4038

FE 39

CPI 39H

Сравниваем полученное с 39H

403A

DA 40 44

JC M1

Если меньше39H, переход по метке, иначе

403D

FE 39

CPI 39H

Сравниваем с 39H

403F

CA 44 40

JZ M1

Если равно 39H, переход по метке, иначе

4042

C6 07

ADI 07H

Добавляем 7, для выравнивая с кои-7

4044

12

M1:

STAX D

Сохраняем полученное число

4045

13

INX D

4046

7E

MOV A, M

Загружаем в аккумулятор число

4047

E6 0F

ANI 0FH

Обнуляем старшую тетраду

4049

F6 30

ORI 30H

Записываем в старшую тетраду "3"

404B

FE 39

CPI 39H

Сравниваем с 39H

404D

DA 57 40

JC M2

Если меньше39H, переход по метке, иначе

4050

FE 39

CPI 39H

Сравниваем с 39H

4052

CA 57 40

JZ M2

Если равно 39H, переход по метке, иначе

4055

C6 07

ADI 07H

Добавляем 7, для выравнивая с кои-7

4057

12

M2:

STAX D

Сохраняем полученное число

4058

13

INX D

4059

23

INX H

Переход к следующему числу

405A

0D

DCR C

Уменьшение счетчика

405D

C2 2E 40

JNZ A1

Если обработаны не все числа, переход по метке

4060

C3 40 00

JMP 0040 H

Выход в монитор

Результаты работы программы

По адресу 5000 лежит массив исходных данных:

Адрес

Константа16

5000

FF

5001

35

5002

57

5003

8D

5004

80

5005

00

5006

F4

5007

9A

5008

07

5009

0A

По адресу 7000 лежит массив результатов:

Адрес

Константа16

7000

30 30

7002

30 37

7004

30 41

7006

33 35

7008

35 37

700A

38 30

700C

38 44

700E

39 41

7010

46 34

7012

46 46

Исходному массиву соответствует:

Адрес

Константа16

5000

00

5001

07

5002

0A

5003

35

5004

57

5005

80

5006

8D

5007

9A

5008

F4

5009

FF

Похожие статьи




3.Примеры арифметики с ДД - кодами на основе чисел из таблицы п.2 после их перевода в ДД, Практическая часть - Разработка программ преобразования форматов двоичных данных и сортировок

Предыдущая | Следующая