МПС 3 курс Практические задания 04 Составление программ КР580ВМ80 - BysonHunter/Tavrich_college GitHub Wiki
🏠 Главная · Микропроцессорные системы · 3 курс · Практические работы по МДК.02.01 «Микропроцессорные системы»
Практическая работа №4
Составление программ на базе эмулятора КР580ВМ80
Цель работы
Совершенствовать навыки разработки программ для КР580ВМ80/Intel 8080:
- линейных алгоритмов;
- ветвлений;
- циклов;
- работы с массивами;
- многобайтовой арифметики;
- подпрограмм
CALL/RET.
Общие требования
Для каждой задачи:
- составить словесный алгоритм;
- определить используемые регистры;
- составить листинг на ассемблере;
- ввести программу в эмулятор;
- подготовить минимум два тестовых набора;
- выполнить программу;
- проверить результат;
- приложить скриншоты и таблицу тестирования.
В конце программы должен быть предусмотрен корректный останов HLT.
Задача 1. Сумма двух однобайтовых величин
Исходные данные:
B = U1
C = U2
Найти:
U_sum = U1 + U2
Уточнение
Сумма двух байтов может быть больше 255, поэтому одного регистра D недостаточно для полного результата.
В этой версии задания требуется:
D = младший байт суммы
E = 00h, если переноса нет
E = 01h, если CY = 1
То есть пара ED хранит полный 9-битный результат.
Проверьте минимум два случая:
10 + 20
200 + 100
Задача 2. Минимум из трёх значений
В регистрах:
D = Детали_A
E = Детали_B
H = Детали_C
Найти минимальное значение и записать в:
L
Используйте CMP либо вычитание с анализом CY/Z.
Проверьте случаи:
- минимум — первое значение;
- минимум — второе;
- минимум — третье;
- два значения равны.
Задача 3. Максимум из двух значений в памяти
[2000h] = T1
[2001h] = T2
Записать большее значение в:
[2002h]
Если значения равны, можно записать любое из них.
Задача 4. Максимальная сторона треугольника
Исходные данные:
[2070h] = A
[2071h] = B
[2072h] = C
Найти:
max(A,B,C)
Результат:
[2075h]
В этой задаче проверять существование треугольника не требуется, если преподавателем не указано иное.
Задача 5. Периметр треугольника
[2050h] = A
[2051h] = B
[2052h] = C
Вычислить:
P = A + B + C
Максимум:
255 + 255 + 255 = 765 = 02FDh
Поэтому результат должен быть двухбайтовым:
[2060h] = младший байт
[2061h] = старший байт
Необходимо корректно учитывать CY.
Задача 6. Сумма восьми измерений
Массив:
2100h...2107h
Содержит 8 значений температуры 0...50.
Максимальная сумма:
8 × 50 = 400 = 0190h
Следовательно, результат сразу следует считать двухбайтовым:
[2108h] = младший байт суммы
[2109h] = старший байт суммы
Задача 7. Максимум массива и его индекс
Массив из 15 элементов:
2300h...230Eh
Найти максимальный элемент.
Результаты:
[230Fh] = максимальное значение
[2310h] = индекс максимального элемента, 0...14
Если максимум встречается несколько раз, рекомендуется сохранять индекс первого найденного максимума.
Задача 8. Максимальное абсолютное отклонение
Эталон:
[2200h] = R
Массив из 10 измерений:
2201h...220Ah
Для каждого элемента вычислить:
D = |Xi - R|
Найти максимальное D.
Результат:
[2210h]
Подсказка
если Xi >= R: D = Xi - R
иначе: D = R - Xi
Задача 9. Количество элементов выше порога
Массив из 12 байтов:
2400h...240Bh
Порог:
[240Ch] = L
Подсчитать элементы, для которых:
Xi > L
Результат:
[240Dh]
Максимальный счётчик равен 12, поэтому одного байта достаточно.
Задача 10. Работа с подпрограммами
Исходные стороны:
[2500h] = A
[2501h] = B
[2502h] = C
Необходимо:
- найти максимум →
[2510h]; - найти минимум →
[2511h]; - вычислить периметр →:
[2512h]— младший байт;[2513h]— старший байт.
Требование
Организовать минимум три подпрограммы:
FIND_MAX
FIND_MIN
CALC_PERIMETER
Вызовы:
CALL FIND_MAX
CALL FIND_MIN
CALL CALC_PERIMETER
HLT
Каждая подпрограмма должна завершаться:
RET
Если подпрограмма изменяет регистры, которые нужны вызывающему коду, используйте PUSH/POP или явно документируйте это.
Таблица тестирования
| Тест | Исходные данные | Ожидаемый результат | Полученный результат | Статус |
|---|---|---|---|---|
| 1 | ||||
| 2 |
Содержание отчёта
- Титульный лист.
- Цель.
- Алгоритмы задач.
- Листинги программ.
- Машинные коды/экспорт из эмулятора — если требуется.
- Скриншоты.
- Таблицы тестирования.
- Анализ ошибок и переполнений.
- Вывод.