
ГБОУ СПО СПб КИТ
Лабораторная работа № 9
Программирование арифметических задач на Ассемблере для микропроцессора К580
Цель лабораторной работы - рассмотреть особенности выполнения простейших арифметических операций над целыми числами без знака на МП, познакомиться с программированием в машинных кодах и мнемокодах, научиться пользоваться средствами управления и клавиатурой устройств.
1 Сложение двухбайтовых десятичных чисел
Цель: Выполнить операцию сложения двух двухбайтных чисел
Таблица 1 - Программа PRG 1 сложения двух десятичных чисел
Адрес |
Код |
Мнемоника |
Комментарий |
0000 |
3E |
MVI A,8A |
Младший байт первого слагаемого заносится в аккумулятор 8A16 A |
0001 |
8A |
||
0002 |
06 |
|
|
0003 |
B4 |
|
|
0004 |
80 |
|
|
0005 |
32 |
|
|
0006 |
50 |
|
|
0007 |
00 |
|
|
0008 |
3E |
|
|
0009 |
08 |
|
|
000А |
06 |
|
|
000В |
10 |
|
|
000С |
88 |
|
|
000D |
32 |
|
|
000E |
51 |
|
|
000F |
00 |
|
|
0010 |
76 |
|
|
Данная программа выполняет операцию 88A16 + 10B416 = 193E16
(218610 + 427610 = 646210). Сначала складываются младшие байты чисел, затем старшие с учетом переноса в старший байт. Младший байт суммы содержится в ячейке памяти 0050, а старший байт суммы в ячейке памяти 0051. Проверить результат сложения. Выполнить индивидуальное задание. Заполнить третий и четвертый столбец таблицы 1. Проверить и зафиксировать в отчете содержимое регистра F после сложения младших и старших байтов, а также результат сложения. Программу выполнять в режиме команд.
Индивидуальное задание 1
В отчете представить:
Арифметические вычисления в десятичной и шестнадцатеричной системе счисления.
Результат сложения двух чисел поместить в ячейки 0020 и 0021.
Скриншот программы до выполнения.
Скриншот программы после выполнения.
Таблицу с текстом программы и комментариями.
Вариант |
ФИО |
Задание (в десятичной с. с.) |
1 |
Баканин Руслан |
1234+3478 |
2 |
Болгов Иван |
2098+4512 |
3 |
Бондаренко Михаил |
1980+3411 |
4 |
Долин Ярослав |
2316+2789 |
5 |
Жариков Евгений |
2561+3401 |
6 |
Зайцев Дмитрий |
2309+3205 |
7 |
Иванов Кирилл |
1234+5601 |
8 |
Коркин Кирилл |
2094+4167 |
9 |
Костюк Иван |
3400+2176 |
10 |
Кривокора Владислав |
4309+2189 |
11 |
Ливенский Александр |
4705+2612 |
12 |
Логвинец Евгений |
3091+1870 |
13 |
Новокшонов Павел |
3890+1670 |
14 |
Огаркова Анна |
3487+1569 |
15 |
Осипов Антон |
4511+1908 |
16 |
Осипов Владислав |
3284+2156 |
17 |
Пасюта Александр |
2351+1230 |
18 |
Прокофьев Виталий |
4181+2144 |
19 |
Семячков Антон |
3091+2389 |
20 |
Соболев Михаил |
2190+4211 |
21 |
Степанов Игорь |
1904+3890 |
22 |
Тимаревский Михаил |
2311+4356 |
23 |
Черницын Матвей |
2111+2900 |
24 |
|
3406+1940 |
2 Вычитание одинаковых по длине чисел
Цель: Выполнить операцию вычитания двух двухбайтных чисел.
Таблица 2 - Программа PRG 2 вычитания двух чисел.
Адрес |
Код |
Мнемоника |
Комментарий |
0000 |
3E |
|
|
0001 |
27 |
||
0002 |
D6 |
|
|
0003 |
83 |
|
|
0004 |
32 |
|
|
0005 |
50 |
|
|
0006 |
00 |
|
|
0007 |
3E |
|
|
0008 |
21 |
|
|
0009 |
DE |
|
|
000А |
10 |
|
|
000В |
32 |
|
|
000С |
51 |
|
|
000D |
00 |
|
|
000E |
76 |
|
|
Данная программа выполняет операцию 212716 – 108316 = 10A416
(848710 – 422710 = 426010). Сначала из младшего байта уменьшаемого вычитается младший байт вычитаемого, результат помещается в ячейку памяти 0050. Далее с учетом заема в младший байт из старшего байта уменьшаемого вычитается старший байт вычитаемого, результат помещается в ячейку памяти 0051. Проверить результат вычисления. Выполнить индивидуальное задание. Заполнить третий и четвертый столбец таблицы 2. Проверить и зафиксировать в отчете содержимое регистра F после вычитания младших и старших байтов, а также результат вычитания чисел – ячейки памяти 0050 (младший байт разности) и 0051 (старший байт разности). Программу выполнять в режиме команд.
Проверьте правильность полученного результата для примера:
А30416 (4173210) – 7E2116(3228910) = 24E316(944310).
Самостоятельно, поместите результат вычислений в ячейки 0020 и 0021.
Индивидуальное задание 2
В отчете представить:
Арифметические вычисления в десятичной и шестнадцатеричной системе счисления.
Результат вычитания двух чисел поместить в ячейки 0020 и 0021.
Скриншот программы до выполнения.
Скриншот программы после выполнения.
Таблицу с текстом программы и комментариями.
Вариант |
ФИО |
Задание (в десятичной с. с.) |
1 |
Баканин Руслан |
40567-34008 |
2 |
Болгов Иван |
32891-23451 |
3 |
Бондаренко Михаил |
23000-8711 |
4 |
Долин Ярослав |
19834-7611 |
5 |
Жариков Евгений |
23456-10888 |
6 |
Зайцев Дмитрий |
45088-2456 |
7 |
Иванов Кирилл |
54123-25120 |
8 |
Коркин Кирилл |
63410-7654 |
9 |
Костюк Иван |
43091-2309 |
10 |
Кривокора Владислав |
45900-21098 |
11 |
Ливенский Александр |
50145-10987 |
12 |
Логвинец Евгений |
49800-33111 |
13 |
Новокшонов Павел |
19089-8900 |
14 |
Огаркова Анна |
36510-20987 |
15 |
Осипов Антон |
32198-12345 |
16 |
Осипов Владислав |
54009-26511 |
17 |
Пасюта Александр |
49001-56234 |
18 |
Прокофьев Виталий |
51234-23411 |
19 |
Семячков Антон |
36709-12099 |
20 |
Соболев Михаил |
34211-10981 |
21 |
Степанов Игорь |
41308-25765 |
22 |
Тимаревский Михаил |
54100-34145 |
23 |
Черницын Матвей |
23400-13022 |
24 |
|
47890-2341 |