ГБОУ СПО СПб КИТ
Лабораторная работа № 9
Программирование арифметических задач на Ассемблере для микропроцессора К580
Работу выполнил студент группы № 000
Тимаревский Михаил
Цель лабораторной работы - рассмотреть особенности выполнения простейших арифметических операций над целыми числами без знака на МП, познакомиться с программированием в машинных кодах и мнемокодах, научиться пользоваться средствами управления и клавиатурой устройств.
1 Сложение двухбайтовых десятичных чисел
Цель: Выполнить операцию сложения двух двухбайтных чисел
Задание №1
Арифметические вычисления в десятичной и шестнадцатеричной системе счисления.
2311(807)+4356(1104)=6667(190B)
Задание №2
(Скриншот до выполнения)

Задание №3

Ответ был выведен в ячейку № 000 и 0051

Задание №4
Таблица с текстом программы и комментариями
Адрес | Код | Мнемоника | Комментарий |
0000 | 3E | MVI A,07 | Младший байт первого слагаемого заносится в аккумулятор 0716 ®A |
0001 | 07 | ||
0002 | 06 | MVI B,04 | Младший байт второго слагаемого заносится в аккумулятор 0416 ®B |
0003 | 04 | ||
0004 | 80 | ADD B | |
0005 | 32 | STA Adr | Указываем адрес для вывода ответа (младший байт) |
0006 | 50 | ||
0007 | 00 | NOP | |
0008 | 3E | MVI A, 08 | Старший байт первого слагаемого заносится в аккумулятор 0816 ®A |
0009 | 08 | ||
000А | 06 | MVI B, 10 | Старший байт второго слагаемого заносится в аккумулятор 1016 ®B |
000В | 10 | ||
000С | 88 | ADC, B | Содержимое региста B и бит переноса добавляются к содержимому аккумулятора. |
000D | 32 | STA Adr | Указываем адрес для вывода ответа (старший байт) |
000E | 51 | ||
000F | 00 | NOP | |
0010 | 76 | HLT | Остановка процессора |
2 Вычитание одинаковых по длине чисел
Цель: Выполнить операцию вычитания двух двухбайтных чисел.
Задание №1
Арифметические вычисления в десятичной и шестнадцатеричной системе счисления.
54100(D354)-34145(8561)=19955(4df3)
Задание №2
(Скриншот до выполнения)

Задание №3

(Ответ выводится в ячейку 0050 и 0051)

Задание №4
Таблица с текстом программы и комментариями
Адрес | Код | Мнемоника | Комментарий |
0000 | 3E | MVI A, 54 | Младший байт первого слагаемого заносится в аккумулятор 5416 ®A |
0001 | 54 | ||
0002 | D6 | SUI B, 61 | Содержимое второго байта команды вычитается из содержимого аккумулятора |
0003 | 61 | ||
0004 | 32 | STA Adr | Указываем адрес для вывода ответа (младший байт) |
0005 | 50 | ||
0006 | 00 | NOP | |
0007 | 3E | MVI A, 08 | Старший байт первого слагаемого заносится в аккумулятор 0816 ®A |
0008 | D3 | ||
0009 | DE | SBI B, 10 | Содержимое второго байта команды и перенос вычитаются из содержимого аккумулятора |
000A | 85 | ||
000B | 32 | STA Adr | Указываем адрес для вывода ответа (старший байт) |
000C | 51 | ||
000D | 00 | NOP | |
000E | 76 | HLT | Остановка процессора |
3 Команды логического умножения
Цель: исследование команд логического умножения.
Задание №1
Арифметические вычисления в десятичной, шестнадцатеричной и двоичной системе счисления.
251(FB)()&45(2D)(101101)=41(29)()
& | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | |
= | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |
Задание №2
(Скриншот до выполнения)

Задание №3 
(Ответ выводится в ячейку 0010)

Задание №4
Таблица с текстом программы и комментариями
Адрес | Код | Мнемоника | Комментарий |
0000 | 3E | MVI A, A3 | Содержимое первого слагаемого заносится в аккумулятор A316 ®A |
0001 | A3 | ||
0002 | 06 | MVI B, 8B | Содержимое второго слагаемого заносится в аккумулятор 8B16 ®B |
0003 | 8B | ||
0004 | A0 | ANA B | Содержимое регистра B логически умножается с содержимым аккумулятора |
0005 | 32 | STA Adr | Указываем адрес для вывода ответа |
0006 | 10 | ||
0007 | 00 | NOP | |
0008 | 76 | HLT | Остановка процессора |


