ЦУиМП Лек2 5курс (1086960), страница 12
Текст из файла (страница 12)
Пример.
MPYK 500
MPYK 1FEFH
6.4.6. Группа команд управления
Подгруппа команд запрещения/разрешения внешнего прерывания.
Команда разрешения внешнего прерывания EINT (Enable INTerrupt). По этой команде
флаг слова состояния процессора INTM устанавливается в 0. Т.е. после этой команды
внешнее прерывание не маскируется.
Команда запрещения внешнего прерывания - DINT (Disable INTerrupt). Флаг слова
состояния процессора INTM устанавливается в 1. Внешние прерывания при этом
маскируются, т.е. не оказывают никакого действия на процессор.
Подгруппа команд установления/снятия режима фиксации переполнения.
Наличие в микропроцессоре режима фиксации переполнения является важным
достоинством . В универсальных микропроцессорах переполнение не контролируется,
поэтому необходимо постоянно отслеживать его появление. В СМП, если установлен
режим фиксации переполнения, то переполнение невозможно. Это существенно упрощает
разработку и отладку программ.
Команда установки режима фиксации переполнения SOVM (Set OVerflow Mask). По этой
команде флаг режима переполнения OVM устанавливается в 1. В дальнейшем, если в
аккумуляторе происходит переполнение, то в него записывается либо максимальное
положительное число, либо минимальное отрицательное.
Команда сброса режима фиксации переполнения ROVM (Reset OVerflow Mask). Флаг
слова состояния процессора OVM устанавливается в 0. В дальнейшем переполнение
возможно. Подгруппа команд загрузки/выгрузки стека (в аккумулятор).
Команда загрузки стека PUSH (PUSH - толкнуть). Содержимое 12 младших разрядов
аккумулятора записывается в верхний уровень стека. Содержимое остальных уровней
стека при этом сдвигается.
29
Команда выгрузки стека в аккумулятор POP. Содержимое верхнего уровня стека
переписывается в 12 младших разрядов аккумулятора, остальные разряды которого
обнуляются. Содержимое других уровней стека сдвигается на одну ячейку вверх.
Подгруппа команд записи/считывания слова состояния процессора в ячейку ОЗУ
данных.
Команды этой подгруппы используются для сохранения или восстановления слова
состояния при вызове/возврате подпрограммы.
Команда сохранения слова состояния SST (Save STatus). В команде допускается прямая и
косвенная адресация. Содержимое пятиразрядного регистра состояния процессора
загружается в соответствующие разряды адресуемой ячейки памяти.
Пример.
SST70
Команда загрузки регистра состояния из ОЗУ данных LST (Load STatus). Определенные
разряды адресуемой ячейки памяти загружаются в регистр состояния процессора.
Команда пустой оператор NOP (Not OPeration). По данной команде никакие действия не
выполняются. Обычно команда используется для временного согласования при
взаимодействии с медленными внешними устройствами, а также для резервирования
ячеек памяти ПЗУ программ.
6.4.7. Группа команд ввода/вывода информации во внешнее ЗУ или во внешние порты ввода/вывода
С помощью команд данной группы микропроцессор обменивается информацией с внешними устройствами. Также как и команды условных переходов эти команды нарушают работу конвейера, что приводит к увеличению времени выполнения команд. Нарушение конвейера объясняется тем, что выполнение команд заключается в передаче по внешней шине данных информации, а это препятствует считыванию и дешифрации следующих команд.
Подгруппа команд считывания/записи информации во внешние порты данных. Команда записи информации во внешние порты OUT (OUTput). Команда выполняется в течение 2 тактов по 200 не. Адрес пота, с которым происходит взаимодействие, выставляется на 3 младших разряда адресной шины. Одновременно с этим на внешнюю шину данных подается слово, записываемое во внешний порт. Все сигналы сопровождаются активным уровнем сигнала WE. В микропроцессоре информация считывается из ячейки ОЗУ данных. Для ее адресации может быть использован прямой и косвенный методы адресации. Пример.
OUT 110,7 ; содержимое 110-й ячейки данных записывается в 7 выходной порт. Команда считывания информации из внешних портов IN (INput). Команда выполняется в течение 2 тактов по 200 не. Адрес порта, с которым происходит взаимодействие, выставляется микропроцессором на 3 младших разряда адресной шины. Одновременно,
активный уровень на выходе КЕНразрешает считывание информации из внешнего порта.
Информация через внешнюю шину данных поступает в микропроцессор и записывается в
адресуемую ячейку ОЗУ данных. В команде допускается прямая и косвенная адресация.
Пример.
IN 60,0 ; выходной сигнал 0-го входного порта записывается в 60-ю ячейку ОЗУ данных.
Подгруппа команд считывания/записи информации во внешнее ЗУ.
Команда записи информации во внешнее ЗУ данных TBLW (TaBLe Write). Информация
из адресуемой ячейки памяти записывается во внешнее ОЗУ по адресу, находящемуся в
аккумуляторе. Данная команда выполняется в течение 3 циклов по 200 не. Наряду с
командой TBLR команда TBLW является самой "медленной" командой микропроцессора.
Такое большое время выполнения команды объясняется следующим: наряду с
30
нарушением работы конвейера один цикл тратится на пересылку содержимого аккумулятора в программный счетчик, для последующей его передачи на внешнюю адресную шину (содержимое счетчика при этом прячется в стек). Запись информации во
внешнее ОЗУ сопровождается активным уровнем сигнала ^ПЕ. Для адресации ячейки
данных может быть использована прямая и косвенная адресация.
Пример.
LACK 255 ; в аккумулятор записывается константа 255.
TBLW 32 ; содержимое 32-й ячейки ОЗУ данных записывается в 255 ячейку внешнего ЗУ.
Команда считывания информации из внешнего ЗУ данных TBLR (TaBLe Read).
Информация из ячейки внешнего ЗУ записывается в адресуемую ячейку внутреннего ЗУ.
Адрес ячейки внешнего ЗУ находится в аккумуляторе, а адрес ячейки внутреннего ОЗУ
указывается в самой команде. Команда выполняется в течение 3 циклов по тем же
причинам, которые замедляют команду TBLW. Считывание информации из внешнего ЗУ
сопровождается активным уровнем сигнала *«EN Ддд адресации ячейки данных
внутреннего ОЗУ может использоваться прямая и косвенная адресация.
Пример.
LACK 100 ; в аккумулятор записывается константа 100.
TBLR 64 ; содержимое 100-й ячейки внешнего ЗУ записывается в 64-ю ячейку
внутреннего ОЗУ данных.
7. НАПИСАНИЕ ПРИКЛАДНЫХ ПРОГРАММ ДЛЯ МИКРОПРОЦЕССОРА
TMS32010
Как и для любого микропроцессора, программирование на ассемблере СМП TMS32010 обладает рядом особенностей, определяющихся его системой команд. Цель данной главы заключается в том, чтобы дать начинающему программисту набор характерных приемов использования команд, показать общие особенности составления программ, объяснить некоторые стандартные программы ЦОС. Изучающий должен рассматривать материал главы не как набор жестких правил, а как совокупность рекомендаций. В каждом конкретном случае программист должен решить использовать ли их, или специфика задачи требует другой реализации. По мере накопления опыта программист вырабатывает собственные приемы, наиболее подходящие для его и его задач.
7.1. Приемы программирования
Рассмотрим приемы программирования, связанные с использованием команд
аккумулятора.
Обнуление ячейки ОЗУ данных.
В отличие от универсальных микропроцессоров, в системе команд которых имеются
команды обнуления регистров общего назначения, в СМП задачу обнуления
произвольной ячейки ОЗУ данных выполняют через обнуление аккумулятора. Допустим
нужно обнулить 100 ячейку ОЗУ данных.
ZAC
SACL ; 100 перепись в 100 ячейку нулевого содержимого аккумулятора, т.е. обнуление
100-й ячейки.
Изменение знака числа, находящегося в ОЗУ данных.
В системе команд TMS32010 отсутствует команда изменения знака, поэтому для этой
операции обычно используется вычитание из 0. Допустим нужно изменить знак числа,
находящиеся в 90-й ячейке памяти.
ZAC
SUB 90,0 получение в младших разрядах аккумулятора отрицательной копии числа из 90-