Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой_проект1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
225 Кб
Скачать
☆

Примеры арифметики с дд- кодами на основе чисел из таблицы п.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

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