
- •Оглавление
- •Общие сведения о микропроцессоре кр580вм80/кр580вм80а (мп кр580) Цели и задачи практикума
- •Вводная информация
- •Структура мп кр580
- •Блок регистров.
- •Арифметическо-логическое устройство.
- •Структура памяти и форматы команд мп кр580
- •Справочная информация по микропроцессору мп кр580
- •Система команд кр580.
- •Коды команд мп кр580.
- •Лабораторная работа №1.Ознакомление с работой мп кр580 и работой эмулятора emКр580
- •1.1.Руководство пользования эмулятором emКр580
- •1.1.1.Текстовый редактор.
- •1.1.2.Синтаксис редактора.
- •1.1.3.Эмулятор программы.
- •1.2.Задания для самоподготовки
- •1.3.Задания к лабораторной работе
- •1.4.Содержание отчета
- •1.5.Контрольные вопросы
- •Лабораторная работа №2.Исследование системы команд мп кр580
- •2.1.Краткие сведения из теории
- •2.1.1.Способы адресации памяти.
- •2.1.2.Система команд микропроцессора.
- •2.1.2.1Команды пересылки данных.
- •2.1.2.2Арифметические и логические команды.
- •2.1.2.3Команды передачи управления.
- •2.1.2.4Специальные команды.
- •2.2.Задания для самоподготовки
- •2.3.Задания к лабораторной работе
- •2.4.Содержание отчета
- •2.5.Контрольные вопросы
- •Лабораторная работа №3.Подпрограммы и стек
- •3.1.Краткие сведения из теории
- •3.2.Задания для самоподготовки
- •3.3.Задания к лабораторной работе
- •3.4.Содержание отчета
- •3.5.Контрольные вопросы
- •Лабораторная работа №4.Ввод/вывод, маскирование данных и организация условных переходов
- •4.1.Краткие сведения из теории
- •4.1.1.Общие сведения об организации интерфейса ввода/вывода.
- •4.1.2.Маскирование данных.
- •4.1.3.Организация условных переходов.
- •4.2.Задания для самоподготовки
- •4.3.Задания к лабораторной работе
- •4.4.Содержание отчета
- •4.5.Контрольные вопросы
- •Лабораторная работа №5.Выполнение арифметических операций
- •5.1.Краткие сведения из теории
- •5.1.1.Сложение и вычитание.
- •5.1.2.Умножение чисел.
- •5.1.3.Деление чисел.
- •5.1.4.Вычисление специальных функций.
- •5.2.Задания для самоподготовки
- •5.3.Задания к лабораторной работе
- •5.4.Содержание отчета
- •5.5.Контрольные вопросы
- •Литература
5.1.2.Умножение чисел.
Известно несколько алгоритмов умножения чисел. При одном из них умножение можно заменить многократным сложением, например: 14 * 3 = 14 + 14 + 14. Существенный недостаток этого способа – значительная длительность процесса сложения. При другом алгоритме умножение осуществляется столбиком. Этот алгоритм применим для умножения двоичных чисел, например:
0110 |
= 6 |
0011 |
= 3 |
0110 |
|
0110 |
|
0000 |
|
0000 |
|
0010010 |
= 18 |
При вычислении результата по второму способу необходимо осуществлять многократное суммирование со сдвигом влево множимого при одновременной проверке содержимого разрядов множителей, начиная со стороны его младшего разряда. При этом если в очередном разряде множителя записана 1, то множимое прибавляется к сумме и сдвигается влево на 1 разряд, а если в разряде записан 0 – произойдет только сдвиг множимого. Сдвиг множимого влево можно заменить сдвигом суммы вправо. По этому принципу работает программа умножения двух однобайтных чисел с получением двухбайтного результата Прогр. 5 .9 (см. ниже).
Входными параметрами программы Прогр. 5 .9, алгоритм которой приведен ниже, на Рис. 5 .4, являются следующие регистры: регистр D – множимое, регистр E – множитель. Результат записывается в регистровую пару BC.
Прогр. 5.9. Программа умножения двух однобайтных чисел с получением двухбайтного результата.
|
MVI D, A1h |
;Запись в D множимого. |
|
MVI E, 9Bh |
;Запись в E множителя. |
|
LXI B, 0000h |
;Очистить регистры B и C. |
|
MVI L, 08h |
;Загрузка счетчика. |
LAB_1 : |
MOV A, E |
;Множитель в Акк. |
|
RAR |
;Сдвиг анализируемого бита в триггер C. |
|
MOV E, A |
;Возврат в E сдвинутого множителя. |
|
JNC LAB_2 |
;Если бит множителя равен нулю, то идти на LAB_2. |
|
MOV A, B |
;Загрузка в Акк. старшей частичной суммы. |
|
ADD D |
;Прибавление к нему множимого. |
|
MOV B, A |
;Возврат в B старшей частичной суммы. |
LAB_2 : |
MOV A, B |
;Загрузка в Акк. старшей частичной суммы. |
|
RAR |
;Сдвиг старшей частичной суммы вправо (младший бит в C). |
|
MOV B, A |
;Возврат в B старшей частичной суммы. |
|
MOV A, C |
;Загрузка в Акк. младшей частичной суммы. |
|
RAR |
;Сдвиг младшей частичной суммы вправо (C в старший бит). |
|
MOV C, A |
;Возврат в C младшей частичной суммы. |
|
DCR L |
;Декрементация счетчика. |
|
JNZ LAB_1 |
;Если разряд не последний, то идти на LAB_1. |
|
HLT |
;Выход из программы. |
Рис. 5.4. Алгоритм
работы программы умножения двух
однобайтных чисел с получением
двухбайтного результата.