Классификация команд. Способы адресации и языки программирования.
Программное обеспечение микропроцессоров.
Режим прямого доступа в память.
Передача данных с прерыванием программы.
Синхронная и асинхронная передача данных.
Шина управления.
Понятие трех-шинной организации связей. Шины адресов и данных.
Понятие интерфейса.
Вопросы.
Все операции в микропроцессоре вполняются в двоичной системе счисления. Команды в программе тоже представляются в двоичной форме. Каждому типу микропроцессора присуща определенная система команд.
Однако составление программы в двоичных кодах – трудоемкая и сложная для человека задача. Программист должен знать двоичный или шестнадцатеричный код каждой команды, а таких команд бывает около сотни. Для упрощения процесса написания, отладки и чтения программы используют мнемонический или символический код. Каждую команду представляют простым трех- или четырехбуквенным мнемоническим символом (мнемоникой). Мнемоника подбирается так, чтобы она напоминала название команды. Написанную с помощью мнемоник программу транслируют в ее двоичный эквивалент. Это можно сделать вручную с помощью таблиц соответствия или использовав специальную программу, которая называется Ассемблером (программный транслятор). Каждый микропроцессор способен выполнять точно определенный для него набор команд. Программист ограничен только этим набором команд.
|
|
|
Классификация команд.
По числу ячеек памяти, необходимых для размещения одной команды, различают команды в одно, два или три слова. Команды длиной в два и три слова требуют для выборки соответственно два и три цикла обращения к памяти.
По функциональным признакам выделяют три большие группы команд: передачи данных, управления и обработки данных. Рассмотрим подробнее основные команды, при этом название команд приведем по-русски.
Команды передачи данных обеспечивают простую пересылку информации без выполнения каких-либо операций обработки. Существуют три вида операндов, участвующих в командах передачи: внутренние регистры микропроцессора, ячейки памяти, регистры устройства ввода-вывода, которые будем называть портами. Можно выделить следующие типы команд:
· ЗАГРУЗИТЬ (ПРОЧИТАТЬ), по которой содержимое одной из ячеек памяти засылается в регистр;
· ЗАПОМНИТЬ (ЗАПИСАТЬ), по которой содержимое регистра засылается в ячейку памяти;
· ПЕРЕСЛАТЬ, по которой содержимое одного регистра пересылается в другой;
· ЗАГРУЗИТЬ НЕПОСРЕДСТВЕННО, по которой в регистр записывается константа, указанная в коде команды;
· ВВОД, по которой содержимое порта засылается во внутренний регистр;
|
|
|
· ВЫВОД, по которой содержимое внутреннего регистра пересылается в порт.
Команды управления, часто называемыми командами перехода, позволяют выполнять различные действия в соответствии со значением внешних сигналов или выработанных внутри системы условий. Команды управления делятся на команды безусловного и условного перехода. К командам безусловного перехода относятся:
· БЕЗУСЛОВНЫЙ ПЕРЕХОД (БП), по которой в программный счетчик записывается содержимое адресного поля в коде команды, то есть обеспечивается переход по аресу, указанному в команде;
· ПРОПУСТИТЬ, по которой пропускается следующая команда в программе;
· БЕЗУСЛОВНЫЙ ПЕРЕХОД С ВОЗВРАТОМ (переход к подпрограмме), по которой в программный счетчик записывается новое содержимое (адрес первой команды подпрограммы), но в отличие от команды БП в памяти сохраняется текущее содержимое программного счетчика. После выполнения подпрограммы по ее последней команде ВОЗВРАТ восстанавливается содержимое программного счетчика.
Команды условного перехода проверяют состояние какого-либо разряда регистра, триггера или другого параметра. От результата проверки зависит будет выполняться переход или нет. К командам условного перехода относятся:
· УСЛОВНЫЙ ПЕРЕХОД (УП) по адресу; в коде команды указывается проверяемое условие:нулевое или ненулевое значение результата, полжительный или отрицатедьный знак результата, наличие или отсутствие сигналов переноса, переполнения и т.д. При выполнении условия обеспечивается переход в программе по адресу, указанному в команде, при невыполнении условия управление передается следующей команде программы;
· УСЛОВНЫЙ ПЕРЕХОД С ВОЗВРАТОМ;
· УСЛОВНО ПРОПУСТИТЬ;
· ЦИКЛ.
Команды обработки данных делятся на арифметические и логические. К арифметическим относятся команды:
· СЛОЖИТЬ содержимое двух регистров или регистра и ячейки памяти;
· ВЫЧЕСТЬ из содержимого ячейки памяти или регистра содержимое регистра;
· УВЕЛИЧИТЬ НА ЕДИНИЦУ (ИНКРЕМЕНТ) содержимое ячейки памяти или регистра;
· УМЕНЬШИТЬ НА ЕДИНИЦУ (ДЕКРЕМЕНТ) содержимое ячейки памяти или регистра;
· СЛОЖИТЬ С УЧЕТОМ ПЕРЕНОСА, по которой выполняется сложение с учетом состояния флага переноса, это позволяет легко организовать обработку чисел большой длины;
· ВЫЧЕСТЬ С УЧЕТОМ ЗАЕМА;
· СДВИГ содержимого ячейки памяти или регистра влево или вправо на один разряд.
К логическим относятся следующие команды:
· И (ЛОГИЧЕСКОЕ УМНОЖЕНИЕ) между двумя операндами;
· ИЛИ (ЛОГИЧЕСКОЕ СЛОЖЕНИЕ) между двумя операндами;
· НЕРАВНОЗНАЧНОСТЬ между двумя операндами;
· ИНВЕРСИЯ содержимого операнда.
Языки программирования для микропроцессоров можно разделить на три основные уровня: машинные, алгоритмические высокого уровня и ассемблера.
Машинные языки находятся на самом нижнем уровне иерархии языков программирования. Будучи языками цифр, они неудобны для описания вычислительных процессов, требуют от программиста больших усилий для написания и отладки программ, хотя программа, написанная на машинном языке, сразу готова для исполнения микропроцессором.
Алгоритмические языки высокого уровня занимают верхнее положение в иерархии языков программирования. Форма языков высокого уровня приближена к привычной математической нотации, обеспечивает естественную форму описания вычислительных процессов. Недостатком является применение трансляторов, неэффективность получаемых после трансляции кодов.
Языки ассемблера, занимая промежуточное положение между машинными языками и языками высокого уровня, объединяют в себе некоторые достоинства самого нижнего и самого верхнегоуровней языков программирования. Транслятор программ с языка Ассемблера гораздо проще и компактнее транслятора для программ, написанных на языке высокого уровня, а результирующая машинная программа на выходе ассемблера получается столь же эффективной, как и программа, которую написали на машинном языке.
|
|
|
Имеется три класса средств программирования: редактирующие программы, транслирующие программы, моделирующие и отладочные программы. Каждый из этих классов облегчает выполнение некоторого этапа разработки программ. Все эти средства программирования делятся на кросс-средства и резидентные. Кросс-средства – это программы, которые выполняются не на микроЭВМ, для которого разрабатывается программное обеспечение, а на какой-нибудь другой машине. Резидентные средства – это программы, которые выполняются на микропроцессоре, для которого разрабатывается программное обеспечение.
Редактирующие программы – это программы, облегчающие создание исходных программ. Эти программы позволяют производить набор исходных текстов, их корректировку. Эти программы оперируют с исходной программой как с текстом, совершенно не учитывая те синтаксические правила, которым должна удовлетворять программа.
Транслирующие программы обеспечивают получение объектной программы из программы, написанной на языке ассемблера в среде какой-то редактирующей программы. Имеются два вида транслирующих программ: компиляторы и интерпритаторы. Компиляторы транслируют весь текст программы в машинный код в ходе одного непрерывного процесса. При этом создается полная программа в машинных кодах, которую затем можно выполнить без участия компилятора. Интерпретатор – это программа, осуществляющая пошаговую трансляцию входной программы с последующим исполнением машинной программы, полученной на каждом шаге трансляции.
Моделирующие и отладочные программы – это программы, позволяющие отлаживать объектную программу без участия самого микропроцессора, для которого эта программа предназначена. Моделирующие программы позволяют: оперировать и выводить на дисплей содержимое памяти моделируемой микроЭВМ и регистров микропроцессора, устанавливать контрольные точки останова, выполнять программу по шагам с приостановом после каждой команды, выводить информацию о времени выполнения программы и т.д. Однако, независимо от того насколько хороша моделирующая программа, она никогда не может заменить полностью отладку программы на реальном микропроцессоре. Это объясняется тем, что специфические временные соотношения и условия внешнего окружения аппаратуры микропроцессора невозможно смоделировать полностью.
|
|
|