Порядок выполнения работы
Проверка подготовки студентов к занятию по вопросам для самоконтроля в виде фронтального или программированного опроса.
Выполнить индивидуальное задание № 1. Составить схему алгоритма и программу линейного вычислительного процесса на языке Ассемблер для МП КР580ВМ80, которая реализует последовательности арифметических или логических операций согласно варианту, заданному в таблице 1.
Таблица 1 – Исходные данные к индивидуальному заданию № 1
№ варианта |
Последовательность операций |
Значения операндов (P = 16) | ||||||
(A) |
(B) |
(C) |
(D) |
(E) |
(M1) |
(M2) | ||
1 |
M2 = 2((C) + (D)) – (M1) |
– |
– |
05 |
1A |
– |
10 |
– |
2 |
M1 = ()(A)(M2) |
03 |
05 |
– |
– |
– |
– |
F0 |
3 |
M2 = ((M1) – (A)) : 2 |
15H |
– |
– |
– |
– |
25H |
– |
4 |
M1 = (()(M2))(A) |
2D |
– |
E1 |
– |
– |
– |
32 |
5 |
M2 = (D) – 2 (M1) + 10 H |
– |
– |
– |
30 |
– |
08 |
– |
6 |
M1 = ()(A)(D) |
35 |
– |
– |
30 |
1F |
– |
– |
7 |
M2 = ((C) – (A)) : 4 – 05 H |
05 |
– |
2D |
– |
– |
– |
– |
8 |
M1 = ()((A)(M2)) |
1E |
– |
– |
32 |
– |
– |
A0 |
9 |
M2 = 4((D) – (M1)) + (A) |
10H |
– |
– |
0A |
– |
05 |
– |
10 |
M1 = (B) ()(M2) |
– |
25 |
– |
11 |
– |
– |
2F |
Примечания
|
Составить алгоритм решения задачи с учетом программной загрузки исходных данных. При составлении алгоритма следует помнить, что в МП КР580ВМ80А умножение и деление на 2 выполняется с помощью команд циклического сдвига влево RLC (RAL) и вправо RRC (RAR) соответственно.
Составить программу на языке Ассемблер в виде таблицы (таблица 2).
Таблица 2 – Линейная программа на языке Ассемблер
Адрес |
Метка |
Команда |
Операнд |
Машинный код |
Комментарий |
1 |
2 |
3 |
4 |
5 |
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Определить ожидаемый результат вычисления. Для этого при выполнении арифметических операций следует подставить в заданное уравнение значения переменных в десятичной системе счисления и выполнить указанные арифметические операции в десятичной системе счисления. Порядок расчета и ожидаемый результат записать в отчет в десятичной и шестнадцатеричной системах счисления.
Логические операции следует выполнять в двоичной системе счисления поразрядно, при этом следует помнить, что логические операции обладают приоритетом. Порядок расчета и ожидаемый результат записать в отчет в двоичной и шестнадцатеричной системах счисления.
Выполнить индивидуальное задание № 2. Составить программу циклического вычислительного процесса на языке Ассемблер для МП КР580ВМ80, которая реализует умножение двух восьмиразрядных двоичных чисел без учета знака (кодовое умножение) согласно варианту, заданному в таблице 3.
Таблица 3 – Исходные данные к индивидуальному заданию № 2
Номер варианта |
Значения операндов (P = 16) |
Начальный адрес программы | |
(DE) |
(A) | ||
1 |
00A3 |
B2 |
0801 |
2 |
00B4 |
C3 |
0802 |
3 |
00D5 |
24 |
0803 |
4 |
00E6 |
35 |
0804 |
5 |
00F1 |
DA |
0805 |
6 |
00D4 |
35 |
0806 |
7 |
00B2 |
47 |
0807 |
8 |
00C3 |
5B |
0808 |
9 |
00B3 |
74 |
0809 |
10 |
00D2 |
A3 |
080A |
Пусть множимое хранится в паре регистров DE, где оно занимает младший регистр E, старший регистр D пары регистров установлен в нуль. Множитель хранится в аккумуляторе A. 16-разрядное произведение будем формировать в паре регистров HL. Счетчик числа повторений цикла организуем на регистре B.
Процесс умножения организуем следующим образом. Будем анализировать разряды множителя, начиная с его старшего разряда. Поэтому частичные произведения будут формироваться, начиная со старшего частичного произведения. Накопление суммы частичных произведений будем производить в паре регистров HL, т.е. к содержимому предварительно сброшенной в нуль пары регистров HL вначале прибавим восьмое частичное произведение. Затем, сдвинув на один разряд влево содержимое пары регистров HL, прибавим седьмое частичное произведение и так далее, пока не будут просуммированы все частичные произведения.
Таким образом, процесс умножения носит циклический характер. Цикл содержащий операции сдвига влево содержимого пары регистров HL, формирования и прибавления к содержимому пары регистров HL очередного частичного произведения, должен быть повторен восемь раз.
Алгоритм решения задачи представлен на рисунке 1.
Рисунок 1 – Схема алгоритма кодового умножения восьмиразрядных чисел
Блок 1 производит загрузку множимого в пару регистров DE и множителя в регистр A. Блок 2 производит загрузку нулевого значения в пару регистров HL. Блок 3 устанавливает в регистре B (счетчике циклов) начальное значение 8. Блок 4 производит сдвиг на один разряд влево содержимого пары регистров HL. Эта операция выполняется путем удвоения содержимого пары регистров: HL (HL) + (HL). Блок 5 предназначен для анализа очередного разряда множителя. Для этого содержимое аккумулятора сдвигается влево, в результате чего очередной разряд множителя пересылается в триггер TC регистра признаков. Блок 6 производит разветвление (условный переход) по содержимому триггера TC. При (TC) = 1 в блоке 7 выполняется операция суммирования множимого к сумме предыдущих частичных произведений в паре регистров HL. При (TC) = 0 операция суммирования не выполняется, по команде условного перехода JNC M1 осуществляется переход к команде блока 8. Блок 8 производит вычитание единицы из содержимого регистра B, после чего блок 9 выполняет разветвление по содержимому триггера TZ регистра признаков. Если (TZ) = 0 (содержимое регистра B не равно нулю), то команда условного перехода JNZ M2 производит переход к команде блока 4, вызывая очередное повторение выполнения тела цикла. Если (TZ) = 1 (содержимое регистра B равно нулю), то происходит выход из цикла и переход к очередной команде.
Составить программу на языке Ассемблер в виде таблицы 4.
Таблица 4 – Циклическая программа умножения восьмиразрядных чисел
Адрес |
Метка |
Команда |
Операнд |
Машинный код |
Комментарий |
1 |
2 |
3 |
4 |
5 |
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Определить время выполнения операции умножения для тактовой частоты равной 2 МГц. Для этого определить количество тактов, требуемое для однократного прохождения цикла алгоритма и полученный результат умножить на восемь. Суммарное число тактов умножить на длительность тактового периода (0,5 мкс).
Ответить на контрольные вопросы.
Оформить отчет и сдать зачет.