ГБОУ СПО СПб КИТ
Лабораторная работа № 9
Программирование арифметических задач на Ассемблере для микропроцессора К580
Цель лабораторной работы - рассмотреть особенности выполнения простейших арифметических операций над целыми числами без знака на МП, познакомиться с программированием в машинных кодах и мнемокодах, научиться пользоваться средствами управления и клавиатурой устройств.
1 Сложение двухбайтовых десятичных чисел
Цель: Выполнить операцию сложения двух двухбайтных чисел
2 | Болгов Иван | 2098+4512 |
1)2098+4512
2)перевожу в 16-ую систему счисления
3)832+11A0
Адрес | Код | Мнемоника | Комментарий |
0000 | 3E | MVI A,8A | Младший байт первого слагаемого заносится в аккумулятор 8A16 ®A |
0001 | 32 | ||
0002 | 06 | MVIB, d8 | Записать в регистр B число d8 |
0003 | A0 | ANA B | Содержимое регистра В логически умножается с содержимым аккумулятора |
0004 | 80 | ADD B | Сложить числа |
0005 | 32 | STA adr | Содержимое аккумулятора засылается в ячейку |
0006 | 20 | - | |
0007 | 00 | NOP | |
0008 | 3E | MVI A, d8 | Записать в регистр A число d8 |
0009 | 08 | - | |
000А | 06 | MVI B, d8 | Записать в регистр B число d8 |
000В | 10 | - | |
000С | 88 | ADC B | Содержимое регистра В и бит переноса добавляются к содержимому аккумулятора |
000D | 32 | STA adr | Содержимое аккумулятора засылается в ячейку |
000E | 21 | MOV D, C | Содержимое регистра С засылается в регистр В |
000F | 00 | NOP | |
0010 | 76 | HLT | Остановка процессора |
До выполнения программы

После выполнения программы

2 Вычитание одинаковых по длине чисел
Цель: Выполнить операцию вычитания двух двухбайтных чисел.
Таблица 2 - Программа PRG 2 вычитания двух чисел.
2 | Болгов Иван |
|
1)
2) Перевожу в 16-ую систему счисления
3) 807B-5B9B=24E0
Адрес | Код | Мнемоника | Комментарий |
0000 | 3E | MVI A, d8 | Содержимое второго байта команды засылается в регистр А содержимое регистра Е засылается в регистр А |
0001 | 7B | ||
0002 | D6 | SUI d8 | Содержимое второго байта команды вычитается из содержимого аккумулятора |
0003 | 9B | ORA E | Содержимое регистра Е вычитается из аккумулятора |
0004 | 32 | STA adr | Содержимое аккумулятора засылается в ячейку |
0005 | 20 | - | |
0006 | 00 | NOP | |
0007 | 3E | MVI A, d8 | Содержимое второго байта команды засылается в регистр А |
0008 | 21 | LXI H, d16 | Третий байт команды записывается в регистр Н |
0009 | DE | SBI d8 | Содержимое второго байта команды вычитаем из аккумулятора |
000А | 10 | - | |
000В | 32 | STA adr | Третий байт команды записывается в младший байт |
000С | 21 | MOV D, C | Содержимое регистра В засылается в регистр D |
000D | 00 | NOP | |
000E | 76 | HLT | Остановка процессора |
До выполнения

После выполнения программы

3 Команды логического умножения
2 | Болгов Иван | 99&123 |
1)99*123=99
2) Переводим в 16-ую систему счисления
63*7B=63
Цель: исследование команд логического умножения.
Адрес | Код | Мнемоника | Комментарий |
0000 | 3E | MVI A, d8 | Первое слагаемое заносится в аккумулятор |
0001 | 63 | MOV H, E | Содержимое регистра Е засылается в регистр H |
0002 | 06 | MVI B, d8 | Содержимое второго байта команды засылается в регистр В |
0003 | 7B | MOV A, E | Содержимое регистра Е засылается в регистр А |
0004 | A0 | ANA B | Содержимое регистра В логически умножается с содержимым аккумулятора |
0005 | 32 | STA adr | Запись содержимого аккумулятора в регистр |
0006 | 20 | - | В ячейку 0020 |
0007 | 00 | NOP | |
0008 | 76 | HLT | Остановка процессора |
Здесь выполняется операция логического умножения чисел:
11000112 (6316) & 11110112 (7В16) = 11000112 (6316)
& |
| 1 | 1 | 0 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 | 1 | 1 | |
= |
| 1 | 1 | 0 | 0 | 0 | 1 | 1 |
До выполнения

После выполнения программы

4 Команды обнуления битов
Цель: исследование команд маскирования.
Адрес | Код | Мнемоника | Комментарий |
0000 | 21 | ||
0001 | 40 | ||
0002 | 00 | ||
0003 | 3E | ||
0004 | 33 | ||
0005 | 36 | ||
0006 | 21 | ||
0007 | А6 | ||
0008 | 32 | ||
0009 | 20 | ||
000A | 00 | ||
000B | 76 |
5 Команды логического сложения
2 | Болгов Иван | 123+99 |
1)12310+9910=22210
2)+=
3)7B16+6316=DE16
Адрес | Код | Мнемоника | Комментарий |
0000 | 21 | LXI H, d16 | |
0001 | 40 | MOV B, B | |
0002 | 00 | NOP | |
0003 | 3E | MVI A, d8 | |
0004 | 7B | MOV A, E | |
0005 | 36 | MVI M, d8 | |
0006 | 63 | MOV H, E | |
0007 | B6 | ORA M | |
0008 | 76 | HLT |


