Система команд МП К1810 является расширенным множеством системы команд МП К580, в котором сохранено большинство команд МП К580, за исключением редкоиспользуемых команд условных вызовов и возвратов.
Команды основных операций МП К1810 задают два операнда, одним из которых является содержимое регистра или ячейки памяти, а другим — содержимое регистра или соответствующего поля в теле команды (непосредственный операнд). Результат операции может записываться на место операнда в регистре или памяти.
Система команд МП использует прямую, относительную (посредством базовых регистров), непосредственную, косвенную адресацию. В МП могут выполняться арифметические операции над 8- и 16-разрядными числами со знаком и без знака, над упакованными и неупакованными двоично-кодированными десятичными числами. Для простых операций обработки последовательностей данных (цепочек) имеются однобайтные команды, для которых посредством префикса можно задавать число повторений. Имеются команды передачи управления двух типов, осуществляющие переходы соответственно внутри текущего программного сегмента и к произвольному сегменту, который при этом становится текущим. Кроме того, для управления режимом работы МП имеется несколько команд, с помощью которых можно изменять состояние МП: сброс и установка отдельных признаков в регистре F, ожидание, блокировка шины, пошаговый режим, останов и т. п.
По формату все команды микропроцессора подразделяются на четыре группы.
· однооперандная команда;
Первый байт команды
Постбайт адресации
КОП
W
mod
КОП
r/m
Третий байт команды
Четв. байт команды
Младший байт смещения
Старший байт смещения
· двухоперандная команда;
Первый байт команды
Постбайт адресации
КОП
d
W
mod
reg
r/m
Третий байт команды
Четв. байт команды
Младший байт смещения
Старший байт смещения
· двухоперандная команда с непосредственным операндом;
Первый байт команды
Постбайт адресации
КОП
W
mod
КОП
r/m
Третий байт команды
Четв. байт команды
Младший байт смещения
Старший байт смещения
Пятый байт команды
Шестой байт команды
Младший байт данных
Старший байт данных
Формирование команды во всех трех случаях аналогичен. В первом байте команды содержится код операции и два однобитных поля: направления передачи d и слова w. При d=l осуществляется передача «в», а при d=0 — передача «из» МП. Направление передачи относится ко второму операнду (регистру), определяемому полем reg второго байта команды. Поле wзадает формат операнда: при w = 0 МП оперирует с байтом, а при w=l производится обработка 16-битного слова.
Второй байт команды, называемый постбайтом адресации, определяет работающий регистр или ячейку памяти и состоит из трех полей: режима (mod), регистра (reg) и селектора регистр/память (r/m).
В поле reg задается один из регистров, содержащий второй операнд команды.
Поле mod задает используемый режим адресации и предназначено для определения первого операнда команды. Кроме этого код поля mod задает способ использования смещений disp.
Поле r/m команды кодируется способ вычисления эффективного адреса ЕА (смещения) операнда.
Байты с третьего по шестой являются не обязательными.
· специальный форматы команд - команды, которые позволяют сокращать на один байт формат часто используемых команд.
По функциональному признаку все множество команд МП К1810 можно разделить на шесть групп:
Аналогична команде 1DIV, но операнды, частное и остаток беззнаковые
Коррекция неупакованного BCD-деления
AAD
(AL)← 10*(AH)+(AL);
(АН) ← 0
Преобразовать байт в слово
CBW
Расширяет знак AL в АН
Преобразовать слово в двойное слово
CWD
Расширяет знак АХ в DX
Логические команды
Форматы команд сдвигов
Сдвинуть логически влево
SHL OPR, CNT
Сдвинуть арифметически влево
SAL OPR, CNT
Сдвинуть логически вправо
SHR
Сдвинуть арифметически вправо
SARQPR.CNT
Сдвинуть циклически влево
ROL OPR, CNT
Сдвинуть циклически вправо
ROR OPR, CNT
Сдвинуть циклически влево через перенос
RCL OPR, CNT
Сдвинуть циклически вправо через перенос
RCR OPR, CNT
Логические команды
Инвертировать
NOT OPR
(OPR) ← NOT (OPR)
Объединить по И
AND DST, SRC
(DST) ← (DST) AND (SRC)
Объединить по ИЛИ
OR DST, SRC
(DST) — (DST) OR (SRC)
Сложить по модулю 2 (Исключающее ИЛИ)
XOR DST, SRC
(DST) ← (DST) XOR (SRC)
Проверить
TEST OPR 1.OPR2
(OPR1)AND(OPR2)
Команды передачи управления
Существует две разновидности команд вызова, перехода и возврата: команды, передающие управление в пределах текущего сегмента кода, и команды, передающие управление в любой сегмент кода, который затем становится текущим. Возможны переходы как прямые, так и посменные.
Вызовы подпрограмм, переходы и возвраты из подпрограмм
2.1. Согласно варианту из таблицы 3.3. нарисовать подробный алгоритм и написать программу на языке АССЕМБЛЕР для МП К1810 по нахождению значения функции. Операнды функции – по 3 байта.
Таблица 3.3
№ вар
Переменная
№ вар
Переменная
№ вар
Переменная
2.2. Пользуясь табл. 3.2, перевести программу в машинные коды.
2.3. Загрузить программу в в память вычислительной машины и выполнить ее. Проверить правильность результатов, с подсчитанными в первой лабораторной работе.
2.4. Согласно варианту из таблицы 3.4. нарисовать алгоритм и написать программу на языке АССЕМБЛЕР для МП К1810 по организации условий при работе с массивами чисел.
Таблица 3.4.
№ вар
Задание
Дан массив из 10 однобайтных чисел. Создать новый массив, исключая из первого повторяющиеся члены и расположить его в порядке убывания.
Дан массив из 10 однобайтных чисел. Создать новый массив, выбрав из первого числа от 10 до 30 и расположить его в порядке возрастания.
Даны два массива из 10 однобайтных чисел. Провести между ними операцию «ИЛИ» и полученный новый массив расположить в порядке убывания.
Дан массив из 20 однобайтных чисел. Создать новый массив, выбрав из первого числа от 07 до 20 и расположить его в порядке убывания.
Дан массив из 15 однобайтных чисел. Создать новый массив, исключив из первого числа от 10 до 30 и расположить его в порядке возрастания.
Дан массив из 30 однобайтных чисел. Создать новый массив, выбирая из первого каждый третий член, складывая их с константой А. Новый массив в порядке убывания.
Дан массив из 20 однобайтных чисел. Создать новый массив, исключив из первого числа от 07 до 20 и расположить его в порядке убывания.
Дан массив из 10 однобайтных чисел. Создать новый массив, выбирая из первого повторяющиеся члены и расположить его в порядке возрастания.
Дан массив из 15 однобайтных чисел. Создать новый массив, выбрав из первого числа меньше 30, провести над ними операцию «И» с константой А и расположить его в порядке возрастания.
Дан массив из 30 однобайтных чисел. Создать новый массив, исключая из первого каждый третий член, а оставшиеся сложить с константой А. Новый массив в порядке убывания.
Дан массив из 10 однобайтных чисел. Если в нем присутствует константа А, из первого массива создать новый массив проведя со всеми членами операцию «исключающего ИЛИ» и расположить его в порядке возрастания.
Дан массив из 10 однобайтных чисел. Исключив из первого числа больше 20, над оставшимися провести операцию «исключающего ИЛИ» с константой А и создать новый массив расположив его порядке возрастания.
Даны два массива из 10 однобайтных чисел. Провести между ними операцию «исключающего ИЛИ» и полученный новый массив расположить в порядке возрастания.
Дан массив из 10 однобайтных чисел. Создать новый массив, исключая из первого повторяющиеся члены и расположить его в порядке возрастания.
Дан массив из 10 однобайтных чисел. Если в нем присутствует константа А, создать новый массив исключив данный член и расположить его в порядке возрастания.
2.5. Пользуясь табл. 3.2, перевести программу в машинные коды.
2.6. Загрузить программу в память вычислительной машины и выполнить ее. Проверить правильность полученных результатов.
3. Порядок выполнения работы
Набор и запуск программы будет осуществляться с помощью компилятора TURBO PASCAL версии 7.0, который обладает следующими необходимыми качествами:
встроенный язык ASSEMBLER;
возможность просмотра содержимого регистров процедуры;
возможность пошагового выполнения программ.
Для запуска TURBO PASCAL запустите командный файл tpx.bat.
После запуска TURBO PASCAL на экране появится картинка, представленная на рисунке 3.3:
Рис. 3.3. Состояние экрана после запуска TURBO PASCAL
Экран будет состоять из следующих частей:
самая верхняя строка – строка Меню;
окно NONAME00.PAS – в этом окне вы наберете исходный текст вашей программы;
окно CPU – в этом окне находится содержимое регистров процессора;
окно Watches – в окне можно просмотреть значения переменных.
Выполнение программы рассмотрим на примере программы пересылки одного массива в другой.
Пример: Дан массива tab1 размером 10 2-х словных чисел (1 слово – 2 байта). Переслать содержимое массива tab1 в массив tab2.
Алгоритм решения задачи, с учетом особенностей МП 1810, представлен на рисунке 3.4.
Рис. 3.4. Алгоритм решения задачи
Программа
Program Primer1;
Label b1,b2; {задать метку}
Var
tab1, tab2: Array[1..10,1..2] of word; {Задать двухсловный массив}
i,J: word;
Begin
{Заполнить массив tab1 случайными числами}
For i:=1 to 2 do begin
For j:=1 to 10 do
tab1[j,i]:=random($FF);
End;
Asm {Начало текста программы на Ассемблере}
lea si, tab1 {Адрес начала массива tab1 занести в SI}
lea di, tab2 {Адрес начала массива tab2 занести в DI}
mov cx, 10 {В регистр СХ занести 10}
b2:
mov bx, 2 {В регистр BХ занести 2}
b1:
mov ax, [si+bx] {В регистр AX занести число, которое
находится по адресу, находящемуся в регистре SI +BX}
mov [di+bx], ax {Занести содержимое регистра АХ в память по адресу,
находящемуся в регистре DI+BX }
dec bx{Переходим к младшему разряду}
dec bx
jns b1 {если знак не установлен, т.е. младший разряд не перенесен, повторить
операцию, иначе далее}
inc si {Увеличить SI на 2}
inc si
inc di {Увеличить DI на 2}
inc di
loop b2 {Уменьшить содержимое СХ на 1 и, если оно не равно 0,
то перейти к метке b1}
End;
End.
После того как вы набрали текст своей программы, нажмите F2 –компьютер запросит новое имя вашей программы. Введите имя и нажмите клавишу [Enter]. Ваша программа сохранится на диске. Далее нажмите клавиши Alt и F9 – если в программе не было ошибок, то на экране появится сообщение, представленное на рисунке 3.5.
Рис. 3.5. Панель успешной компиляции программы.
Если же в программе ошибка, компьютер установит курсор в место ошибки и укажет номер и название этой ошибки. Исправьте ее и откомпилируйте программу заново. Далее необходимо в окно Watches ввести переменные для просмотра их значений. Для этого необходимо нажать CTRL+F7 и ввести имя переменной, после этого нажать [Enter]. Повторять это, пока не введете имена всех переменных.
Для пошагового выполнения программы нажмите F8 до тех пор, пока серая полоса не дойдет до слова END, при этом просматривайте содержимое регистров, чтобы убедиться в том, что программа работает правильно.
Окончательный результат проконтролировать в окне WATCHES.
Для выхода из TURBO PASCAL нажмите Alt+X.
4. Содержание отчета
4.1. Подробный алгоритм и программа на языке АССЕМБЛЕР по нахождению значения функции.
4.2. Результат выполнения программы по нахождению значения функции.
4.3. Подробный алгоритм и программа на языке АССЕМБЛЕР по организации условий при работе с массивами чисел.
4.4. Результат выполнения программы по организации условий при работе с массивами чисел.
5. Контрольные вопросы
5.1. Какие шины рассматривают в структуре МП К1810, и каковы их назначение и разрядность.
5.2. Назначение устройства сопряжения с шиной МП К1810. Его состав и назначение.
5.3. Назначение операционного устройства МП К1810. Его состав и назначение.
5.4. Назначение и состав блока регистров общего назначения МП К1810.
5.5. Регистр признаков. Размерность и состав.
5.6. Устройство управления МП К1810. Сигналы связи с внешними устройствами.
5.7. Способы адресации МП К1810.
5.8. Формат команд МП К1810.
5.9. Система команд МП К1810.
6. Литература
6.1. Каган Б.М., Сташин В.В. Основы проектирования микропроцессорных устройств автоматики. – М.: Энергоиздат, 1987. – 303с.
6.2. Калабеков Б.А. Микропроцессоры и их применение в системах передачи и обработки сигналов: Учебное пособие для высших учебных заведений. М.: Радио и связь, 1988. – 368с.
6.3. Балашов Е.П., Григорьев В.Л., Петров Г.А. Микро- и мини-ЭВМ/Для студентов ВУЗов. – Л.: Энергоатомиздат, 1984. – 376с.
6.4. Микропроцессоры: Том1./ под ред. Преснухина Л.Н. – Мн.: Вышэйшая школа, 1987. – 416с.