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

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

L – счетчик цикла;

B,C – текущий байт 1-ой константы;

H,L – текущий байт 2-ой константы.

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

Адрес

16-ричный код

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

Комментарий

4000

30 00 50

LXI SP, 5000h;

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

4003

01 00 41

LXI B,4100h;

Вывод сообщения на ВТА;

4006

CD 4F 00

CALL 4Fh;

Вызов подпрограммы с адреса 004F

4009

06 04

MVI B, 04h;

Создание счетчика на 4 шага;

400B

21 00 50

LXI H, 5000h;

Получение начального адреса для хранения 1-ой константы;

400E

CD 67 00

CALL 67h;

Ввод одного байта числа;

4011

77

MOV M,A;

Сохранение данного байта в текущий адрес;

4012

23

INX H;

Положительное приращение H,L;

4013

05

DCR B;

Отрицательное приращение B;

4014

C2 0E 40

JNZ 400E;

Переход по адресу 400E при Z=0;

4017

CD 49 00

CALL 49h;

Перевод курсора на новую строку;

401A

01 00 42

LXI B, 4200h;

Вывод сообщения на ВТА;

401D

CD 4F 00

CALL 4Fh;

Вызов подпрограммы с адреса 004F

4020

06 04

MVI B, 04;

Создание счетчика на 4 шага;

4022

CD 67 00

CALL 67h;

Ввод одного байта 2-ой константы;

4025

77

MOV M,A

Сохранение данного байта в текущий адрес;

4026

23

INX H;

Положительное приращение D,E;

4027

05

DCR B;

Отрицательное приращение B;

4028

C2 22 40

JNZ 4022;

Переход по адресу 4022 при Z=0;

402B

CD 49 00

CALL 49h;

Перевод курсора на новую строку;

402E

01 03 50

LXI B, 5003h;

Получение следующего байта 1-ой константы;

4031

21 07 50

LXI H, 5007h;

Получение следующего байта 2-ой константы;

4034

EB

XCHG;

Обмен содержимым между регистрами H,L и D,E;

4035

1A

LDAX D;

Загрузка A содержимым ячейки памяти, адрес которой находится в D,E;

4036

E6 7F

ANI 7Fh;

Логическое умножение 7F и A;

4038

67

MOV H,A;

Сохранение данного байта по адресу 5007;

4039

0A

LDAX B;

Загрузка A содержимым ячейки памяти, адрес которой находится в B,C ;

403A

E6 7F

ANI 7Fh;

Логическое умножение 7F и A;

403C

BC

CMP H;

Сравнение старших байт 2-х констант;

403D

DA 60 40

JC 4060h;

Переход по адресу 4060 при CY=1, т.е. если 2-ая константа больше 1-ой;

4040

C2 6B 40

JNZ 406Bh;

Переход по адресу 406B при Z=0, т.е. если 1-ая константа больше 2-ой;

4043

0B

DCX B;

Отрицательное приращение B;

4044

1B

DCX D;

Отрицательное приращение D;

4045

2E 03

MVI L, 03h;

Создание счетчика на 3 шага;

4047

1A

LDAX D;

Загрузка A содержимым ячейки памяти, адрес которой находится в D,E;

4048

67

MOV H,A;

Сохранение данного байта в текущий адрес;

4049

0A

LDAX B;

Загрузка A содержимым ячейки памяти, адрес которой находится в B,C;

404A

BC

CMP H;

Сравнение соответствующих байт 2-х констант;

404B

DA 60 40

JC 4060h;

Переход по адресу 4060 при CY=1, т.е. если 2-ая константа больше 1-ой;

404E

C2 6B 40

JNZ 406Bh;

Переход по адресу 406B при Z=0, т.е. если 1-ая константа больше 2-ой;

4051

0B

DCX B;

Отрицательное приращение B;

4052

1B

DCX D;

Отрицательное приращение D;

4053

2D

DCR L;

Отрицательное приращение L;

4054

C2 47 40

JNZ 4047h;

Переход по адресу 4047 при Z=0, т.е. если L≠0;

4057

01 FF FF

LXI B, FFFFh;

Вывод сообщения “1-ая константа равна 2-ой” на ВТА;

405A

CD 4F 00

CALL 4Fh;

405D

C3 73 40

JMP 4073h;

Безусловный переход по адресу 4073;

4060

01 00 43

LXI B, 4300h;

Вывод сообщения “2-ая константа больше 1-ой” на ВТА;

4063

CD 4F 00

CALL 4Fh;

Вызов подпрограммы с адреса 004F

4066

06 00

MVI B, 00h;

Запись в регистр B значения 00;

4068

C3 73 40

JMP 4073h;

Безусловный переход по адресу 4073;

406B

01 00 44

LXI B, 4400h;

Вывод сообщения “1-ая константа больше 2-ой” на ВТА;

406E

CD 4F 00

CALL 4Fh;

Вызов подпрограммы с адреса 004F

4071

06 01

MVI B, 01h;

Запись в регистр B значения 01;

4073

C3 40 00

JMP 40h;

Выход в программу монитор.