
- •Оглавление
- •Общие сведения о микропроцессоре кр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.Контрольные вопросы
- •Литература
4.1.2.Маскирование данных.
В различных ситуациях при выполнении программ необходимо проверять или изменять (маскировать) состояние одного или нескольких разрядов числа в аккумуляторе. Это можно осуществить с помощью следующих операций:
Логическое умножение числа в аккумуляторе и маски – очищает разряд числа (устанавливает в 0), если в соответствующем разряде маски будет записан 0, и не изменяет его, если в этом разряде маски записана 1;
Логическое сложение числа в аккумуляторе и маски – устанавливает разряд числа в 1, если в соответствующем разряде маски будет записана 1, и не изменяет его, если в этом разряде маски записан 0;
Логическое "исключающее ИЛИ" числа в аккумуляторе и маски – инвертирует содержание разряда числа, если в соответствующем разряде маски будет записана 1, и не изменяет его, если в этом разряде маски записан 0.
Примеры использования операций маскирования содержимого аккумулятора в случае, если маска находится в регистре, приведены в Табл. 4 .4. В этом случае команды однобайтные. Маскирование содержимого аккумулятора возможно также байтом данных (ANI D8, ORI D8 и XRI D8). В этом случае маска содержится в байте данных, а команды являются двухбайтными. При выполнении логических операций (И, ИЛИ, "исключающее ИЛИ" и НЕ) задействуются разряды Z, S, P, AC регистра признаков (С = 0). Это позволяет проверять состояние любого разряда числа и выполнять условные переходы в программах.
Табл. 4.4. Примеры использования операций маскирования.
Мнемокод |
Машинный код |
Число в аккумуляторе |
Маска в D |
Результат в аккумуляторе |
Комментарий |
ANA D |
A2h |
00111010 11111111 00001111 11110000 00100011 |
10101100 00100010 11111111 11111111 00000000 |
00101000 00100010 00001111 11110000 00000000 |
Логическое умножение (И) содержимого Акк. с байтом D. |
ORA D |
B2h |
00111010 00001111 11110000 |
10101100 00001111 00001111 |
10111110 00001111 11111111 |
Логическое сложение (ИЛИ) содержимого Акк. с байтом. D. |
XRA D |
Aah |
00111100 00001111 11110000 |
10101100 00001111 00001111 |
10010110 00000000 11111111 |
Логическое "исключающее ИЛИ" содержимого Акк. с байтом D. |
4.1.3.Организация условных переходов.
Команды условных переходов относятся к группе команд передачи управления (см. Табл. 0-, Табл. 0- – Табл. 0-). Организация условных переходов в МП осуществляется с помощью регистра признаков (F), который имеет 5 устанавливаемых разрядов (признаков). Все пять бит регистра признаков устанавливаются в результате выполнения операций в АЛУ:
Признак переноса (С) устанавливается в 1, если при выполнении арифметической команды возникает переполнение аккумулятора или при выполнении команды сдвига вытесняется единица из старшего или младшего разряда.
Признак дополнительного переноса (АС) устанавливается в 1, если при выполнении команд возникает единица переноса из третьего разряда числа. Состояние разряда может быть проанализировано лишь командой десятичной коррекции.
Признак знака (S) устанавливается в 1, если седьмой (старший) разряд числа равен 1. Машинное слово представляется числом от –128 до +127. Седьмой разряд числа указывает на знак числа. Если он равен 0, то число положительное, если 1, то отрицательное.
Признак нулевого содержимого аккумулятора (Z) устанавливается в 1, если после выполнения команды результат равен нулю (все биты аккумулятора равны нулю), в противном случае в разряд записывается 0.
Признак паритета (Р) устанавливается в 1, если число единичных битов аккумулятора четно, в противном случае этот разряд будет установлен в нулевое состояние.
Команда условного перехода проверяет состояние соответствующего разряда регистра признаков (F). Если при проверке состояния разряда регистра признаков условие не подтверждается, то выполняется следующая по порядку команда программы, иначе происходит переход. Все команды условных переходов являются трехбайтными: первый байт содержит код команды, второй и третий байты – адрес передачи управления. Таким образом, команды условных переходов позволяют строить ветвящиеся алгоритмы и, в зависимости от текущего значения результата выполнения программы, переходить на различные участки этой программы. Ниже приведен пример программы, использующей маскирование данных и организацию условных переходов.
Программа Прогр. 4 .6 осуществляет ожидание простого (двоичного) события и при возникновении этого события формирует простое (двоичное) управление. В программе каждый бит порта с адресом 03h ассоциируется с некоторым событием от внешнего устройства, например, соответствует состоянию некоторого концевого переключателя технологического процесса. Таким образом, в технологическом процессе задействованы 8 концевых переключателей с номерами 0, 1, …, 7. Так же в технологическом процессе задействованы 8 исполнительных механизмов с номерами 0, 1, …, 7, могущих принимать выключенное состояние или включенное состояние (0 или 1). Каждому механизму соответствует свой бит порта с адресом 04h. Процессор принимает данные из портов 03h, 04h и выдает данные в порт 04h. Программа ожидает включение концевого переключателя с номером 5 (остальные переключатели могут при этом иметь произвольные состояния). В случае достоверности данного события программа включает механизм с номером 4, в противном случае она отключает этот механизм, если он не отключен. При этом программа не должна изменять состояния остальных механизмов.
Прогр. 4.6. Программа ожидания простого события и формирования простого управления.
|
MVI B, 5Dh |
;Загрузка в B заранее заданного состояния механизмов. |
|
MOV A, B |
;Загрузка в Акк. заранее заданного состояния механизмов. |
|
OUT 04h |
;Вывод в порт механизмов (04h) заранее заданного состояния. |
LAB_1 : |
IN 04h |
;Чтение в Акк. состояния механизмов. |
|
MOV B, A |
;Сохранение в B состояния механизмов. |
|
IN 03h |
;Чтение в Акк. состояния концевых переключателей. |
|
ANI 20h |
;Маскирование всех битов Акк., кроме бита с номером 5. |
|
JZ LAB_2 |
;Если бит с номером 5 равен 0, то переход на LAB_2. |
|
MVI A, 10h |
;Загрузка в Акк. маски. |
|
ORA B |
;Установка бита с номером 4. |
|
JMP LAB_3 |
;Безусловный переход на LAB_3. |
LAB_2 : |
MVI A, Efh |
;Загрузка в Акк. маски. |
|
ANA B |
;Сброс бита с номером 4. |
LAB_3 : |
OUT 04h |
;Включение/выключение механизма с номером 4. |
|
JMP LAB_1 |
;Безусловный переход на LAB_1. |
|
HLT |
;Конец программы. |
На практике, как
правило, приходится иметь дело с гораздо
более сложными событиями. Например,
процессор должен выполнить некоторое
действие, если биты порта с адресом 05h
принимают следующие значения: 0-й, 2-й и
4-й биты равны 1, а 1-й и 7-й биты равны 0;
или 1-й и 4-й биты равны 1, а 0-й, 3-й и 5-й
биты равны 0. Такое событие более кратко
можно однозначно записать в виде
выражения алгебры Буля:
,
где
– биты
порта с адресом 05h, а "
"
и "
"
– операции логического умножения и
логического сложения.