
- •Введение.
- •Аналитическая часть.
- •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; |
Выход в программу монитор. |