- •2005 Задание
- •Содержание
- •1. Индивидуальное задание.
- •1. Подготовить для аналитической части реферативный материал на тему:
- •2. Задача для разработки алгоритма и программной реализации на Эмуляторе микро-эвм см-1800
- •2. Аналитическая часть
- •2.1. Кодирование чисел в микропроцессорах.
- •2.2. Формы хранения чисел со знаком (фиксированная точка)
- •2.3. Двоичная арифметика
- •2.4. Арифметика чисел в прямом, обратном и дополнительном кодах.
- •3. Практическая разработка
- •3.1. Описание алгоритма
- •3.4. Листинг программы.
- •4. Описание средств вычислительной техники
- •5. Выводы
- •6. Литература
3.4. Листинг программы.
адрес |
данные |
Код ассемблера |
Комментарии |
4000 |
31 |
LXI SP, 8000h |
Создание стека программы |
4001 |
00 |
|
|
4002 |
80 |
|
|
4003 |
01 |
LXI B, 5001h |
Помещение в пару В, С адреса массива |
4004 |
01 |
|
исходных чисел |
4005 |
50 |
|
|
4006 |
11 |
LXI D, 6001h |
Помещение адреса массива результатов в |
4007 |
01 |
|
пару D, E |
4008 |
60 |
|
|
4009 |
26 |
MVI H, 0Ah |
Создание счетчика на 10 шагов |
400A |
0A |
|
|
400B |
E5 |
M2: PUSH H |
Засылка содержимого регистров H, L в стек |
400C |
0A |
LDAX B |
Загрузка в А старшего байта числа |
400D |
E6 |
ANI 80h |
Логическое умножение 80h и А |
400E |
80 |
|
(проверка знакового разряда) |
400F |
C4 |
JNZ M1 |
Если число отрицательное (т.е. Z=0), то |
4010 |
50 |
|
будет переход на адрес 4050 |
4011 |
40 |
|
|
4012 |
0A |
LDAX B |
Загрузка в А старшего байта числа |
4013 |
12 |
STAX D |
Запись старшего байта результата |
4014 |
0B |
DCX B |
Переход к младшему байту числа |
4015 |
1B |
DCX D |
Переход к младшему байту результата |
4016 |
0A |
LDAX B |
Загрузка в А младшего байта числа |
4017 |
12 |
STAX D |
Запись младшего байта числа |
4018 |
03 |
M3: INX B |
Продвижение адресов на следующую пару |
4019 |
13 |
INX D |
исходных чисел и результата (4018 –401B) |
401A |
03 |
INX B |
|
401B |
13 |
INX D |
|
401C |
E1 |
POP H |
Извлечение содержимого H, L из стека |
401D |
25 |
DCR H |
Уменьшение счетчика на 1 |
401E |
C4 |
JNZ M2 |
Возврат на М2 до исчерпания счетчика |
401F |
0B |
|
|
4020 |
40 |
|
|
4021 |
C3 |
JMP 4000 |
Переход на начало программы |
4022 |
40 |
|
|
4023 |
00 |
|
|
|
|
|
|
4050 |
0B |
M1: DCX B |
Переход к младшему байту числа |
4051 |
0A |
LDAX B |
Загрузка в А младшего байта числа |
4052 |
EE |
XRI FF |
Инвертирование |
4053 |
FF |
|
|
4054 |
6F |
MOV L, A |
Копирование содержимого А в регистр L |
4055 |
03 |
INX B |
Переход к старшему байту числа |
4056 |
0A |
LDAX B |
Загрузка в А старшего байта числа |
4057 |
EE |
XRI FF |
Инвертирование |
4058 |
FF |
|
|
4059 |
67 |
MOV H, A |
Копирование содержимого А в регистр H |
405A |
23 |
INX H |
Прибавление к содержимому H, L 1 |
405B |
7D |
MOV A, L |
Копирование содержимого L в регистр A |
405C |
1B |
DCX D |
Переход к младшему байту результата |
405D |
12 |
STAX D |
Запись младшего байта результата |
405E |
7C |
MOV A, H |
Копирование содержимого H в регистр A |
405F |
13 |
INX D |
Переход к старшему байту результата |
4060 |
12 |
STAX D |
Запись старшего байта результата |
4061 |
C3 |
JMP M3 |
Переход по адресу 4018 |
4062 |
18 |
|
|
4063 |
40 |
|
|