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

Процедура преобразования исходного массива 16ричных констант в их 2-10 коды.

Распределение памяти:

B C

Адрес

Данные

Ассемблерный код

Комментарий

4003

4004

4005

21

00

50

LXI H,5000

Загрузка в <H,L> адреса, начиная с которого будет считан массив исходных констант.

4006

4007

4008

11

00

60

LXI D,6000

Загрузка в <D,E> адреса, начиная с которого будут записаны 2-10 коды.

4009

400A

400B

01

0A

00

LXI B,000A

Создание в регистре C счётчика цикла преобразования.

400C

C5

PUSH B

Сохранение в стек счётчика цикла.

400D

7E

MOV A,M

Загрузка константы из памяти.

400E

400F

0E

00

MVI C,00

Обнуление регистра C.

4010

4011

4012

C3

2C

40

JMP 402C

Переход к подпрограмме последовательного вычитания из аккумулятора числа 64 для получения старшего байта 2-10 кода.

4013

4014

CE

64

ACI 64

Сложение аккумулятора с 64 для восстановления значения до лишнего вычитания.

4015

47

MOV B,A

Сохранение аккумулятора в регистр B.

4016

4017

3E

00

MVI A,00

Обнуление аккумулятора.

4018

4019

401A

C3

35

40

JMP 4035

Переход к подпрограмме последовательного «переписывания» в аккумулятор содержимого <B> с 2-10 коррекцией для получения младш. байта.

401B

12

STAX D

Сохранение младшего байта 2-10 числа в память.

401C

79

MOV A,C

Загрузка в <A> из <C> старшего байта 2-10 кода.

401D

13

INX D

Переход к следующему адресу записи.

401E

12

STAX D

Сохранение старшего байта 2-10 числа.

401F

13

INX D

Переход к следующему адресу записи.

4020

C1

POP B

Восстановление из стека счётчика цикла.

4021

79

MOV A,C

Копирование <C> в <A>.

4022

3D

DCR A

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

4023

4024

4025

CA

3E

40

JZ 403E

Если счётчик достиг нуля, то необходимо выйти из процедуры 2-10 преобразования по флагу Z.

4026

4F

MOV C,A

Иначе <A> копируем в <C>.

4027

C5

PUSH B

И сохраняем в стек уменьшенный счётчик.

4028

23

INX H

Переход к следующему адресу чтения.

4029

402A

402B

C3

0D

40

JMP 400D

Возврат к началу подпрограммы.

402C

402D

D6

64

SUI 64

Начало подпрограммы вычитания из <A> 64 для получения старшего байта 2-10 числа.

402E

402F

4030

DA

13

40

JC 4013

Если произошёл перенос, то есть число в аккумуляторе уже меньше 64, то возвращаемся к основной процедуре по флагу CY.

4031

0C

INR C

Увеличиваем число, означающее старший байт.

4032

4033

4034

C3

2C

40

JMP 402C

Возврат к началу подпрограммы.

4035

05

DCR B

Начало подпрограммы получения мл.ч. <B>-1

4036

4037

4038

CA

1B

40

JZ 401B

По флагу Z возврат к основной процедуре. Нулевой результат означает, что весь остаток исх. константы переписан в аккумулятор в 2-10 виде.

4039

3C

INR A

Увеличиваем аккумулятор на 1.

403A

27

DAA

2-10 коррекция аккумулятора.

403B

403C

403D

C3

35

40

JMP 4035

Возврат к началу подпрограммы.

403E

403F

4040

C3

00

41

JMP 4100

Выход из текущей процедуры. Переход к следующей процедуре (преобразования 2-10 кодов в коды KOИ-7).