- •Инструкция по технике безопасности
- •Методические указания по оформлению отчёта к лабораторным работам.
- •2.1.Правила оформления отчёта.
- •Содержание отчёта:
- •Лабораторная работа мп – 1 Исследование микро-эвм на основе микропроцессора кр580ик80
- •3.2 Краткие теоретические сведения
- •3.3.Учебный микропроцессорный комплект (умк)
- •3.6. Задания к лабораторной работе
- •3.6.2. Индикация и модернизация содержимого озу.
- •3.4 Задание для домашней подготовки
- •3.5. Подготовка умк к работе
- •3.6.3. Модификация содержимого регистров микропроцессора
- •3.6.4. Заполнение озу константой
- •3.6.5. Копирование областей памяти
- •3.6.6. Вычисление контрольной суммы массива памяти
- •3.7. Выполнение программы пользователя
- •3.8. Контрольные вопросы
- •Лабораторная работа мп-2 Исследование цикла выполнения команд микропроцессора кр580ик80
- •4.2. Теоретические сведения
- •4.3. Задание для домашней подготовки
- •4.4. Порядок выполнения работы
- •4.5. Контрольные вопросы
- •Лабораторная работа мп-3 Программирование арифметических операций в системе команд микропроцессора кр580вм80
- •Основные теоретические сведения.
- •Приемы программирования типовых арифметических задач
- •5.3.2. Десятичное сложение
- •5.3.3. Умножение
- •Порядок выполнения работы
- •5.5 Контрольные вопросы
- •6. Лабораторная работа мп-4 Программная реализация типовых функций управления на основе микропроцессора к580ик80
- •6.2. Краткие теоретические сведения
- •6.2.1. Опрос двоичного датчика
- •6.2.2. Ожидание события
- •6.2.3. Ожидание импульсного сигнала
- •6.2.4. Выделение и обработка отдельных бит информации
- •6.2.5. Формирование управляющего сигнала
- •6.2.6. Вывод управляющего слова на группу автономных устройств
- •6.2.7. Формирование временной задержки малой длительности
- •6.2.8. Формирование последовательности импульсных сигналов с изменяемой длительностью и скважностью.
- •6.3. Задание на дом
- •7.Лабораторная работа мп-5
- •7.3. Задание для домашней подготовки
- •7.4. Порядок выполнения работы
- •7.5. Контрольные вопросы
- •Приложение
- •Литература
5.3.3. Умножение
Умножение двух восьмибитных чисел без знака может быть выполнено несколькими способами. Например, путем повторного сложения или применения операции регистрового сдвига.
Повторное умножение обеспечивает простейшую, но самую медленную форму умножения. Например, произведение 20×3А может быть получено путем прибавления 20 к содержимому аккумулятора (предварительно обнуленному) 3А раз.
Используя операции сдвига, можно получить более быстрое умножение. Отметим еще особенность умножения двоичных чисел:
011 = 3
×
110 = 6
000
011
011_____
Х0010=18
При умножении множителя на соответствующий разряд множителя будет получен либо множитель, либо нуль.
Итак, алгоритм умножения будет включать в себя следующие операции:
Проверка бита множителя, начиная с младшего разряда: если 1, то прибавить множенное к старому байту промежуточного результата (при проверке самого последнего бита множителя значение промежуточного результата равен С); если бит множителя равен 0, то переход к пункту 2:
Сдвиг всего двухбайтового промежуточного результата вправо на 1 бит.
Повторение пунктов 1 и 2 необходимо производить до тех пор, пока не будут проверены все 8 бит множителя.
Далее проведена программа умножения RUL T, обеспечиваются рассмотренного алгоритма с учетом следующих начальных условий:
- регистр Е содержит старший байт результата умножения (промежуточного и окончательного);
- регистр С перед началом подпрограммы содержит множитель, ?????байт результата умножения;
- регистр D содержит ???
Сдвиг шестнадцатибитного промежуточного результата выполняемая двумя командами RAR по следующей схеме:
в начале сдвиг регистра С
затем сдвиг регистра Е
MULT : MVI B, 0 ; обнуление старшего байта результата
MVI E, 9 ; установка счетчика бит
MULT0: MOV A, C ; множитель в аккумулятор
RAR ; сдвиг множителя и младшего байта результата
MOV C, A ; хранение результата
DCR E ; счетчик бит = 0?
JZ DONE ; если да, то конец
MOV A, B ; иначе старший байт результата →А
JNS MULT1; младший бит множителя = 0? Если да, то переход по MULTE
ADD D ; прибавление множимого к старшему байту результата
MULTE: RAR ; сдвиг старшего байта результата
MUV B, A ; хранение старшего байта результата
JMP MULT0; ?????
DONE : RET
Рассмотрим пример выполнения программы MULT при умножении двух чисел 2AR×3CH=9D8H.
Исходное состояние: (B)=00000000 (старший байт результата);
(С)=00111100=3СН (множитель, по окончании умножить – младший байт результата).
(D)=00101010=2AH (множимое).
Изменение содержимого регистров записан в табл.5.1.
Таблица 5.1.
Номер цикла |
Операция |
Содержимое (В) |
Флаг С после 2го сдвига |
(С) |
Флаг С после 1го сдвига |
1
2
3
4
5
6
7
8
9 |
ADD RAR ADD RAR ADD RAR ADD RAR ADD RAR ADD RAR ADD RAR ADD RAR ADD RAR |
0 0000000 0 0000000 0 00010101 0 00011111 0 1001001 00100100 0 1001110 00100111 0 00010011 0 0010011 00001001 00001001 |
0
0
0
1
1
0
1
1 |
0 0011110
0 0001111
0 0000111
0 0000011
1 0000001
1 1000000
0 1100000
1 0110000
11011000 |
0
0
1
1
1
1
0
0
0 |

000000
000000
0101010
0111111
0100111