- •Введение.
- •Аналитическая часть.
- •1.1. Системы счисления.
- •1.1.1. Двоичная система счисления.
- •1.1.2. Восьмеричная система счисления.
- •1.1.3. Шестнадцатеричная система счисления.
- •1.2. Способы перевода чисел из одной системы счисления в другую.
- •1.3. Форматы представления чисел с плавающей точкой.
- •Практическая разработка.
- •Описание алгоритма решения задачи.
- •2. Описание программы-эмулятора.
- •Распределение памяти.
- •Листинг программы.
- •Описание использованных средств вычислительной техники.
- •Список использованной литературы.
Распределение памяти.
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; |
Выход в программу монитор. |
