Средства программирования.

Классификация команд. Способы адресации и языки программирования.

Программное обеспечение микропроцессоров.

Режим прямого доступа в память.

Передача данных с прерыванием программы.

Синхронная и асинхронная передача данных.

Шина управления.

Понятие трех-шинной организации связей. Шины адресов и данных.

Понятие интерфейса.

Вопросы.

Все операции в микропроцессоре вполняются в двоичной системе счисления. Команды в программе тоже представляются в двоичной форме. Каждому типу микропроцессора присуща определенная система команд.

Однако составление программы в двоичных кодах – трудоемкая и сложная для человека задача. Программист должен знать двоичный или шестнадцатеричный код каждой команды, а таких команд бывает около сотни. Для упрощения процесса написания, отладки и чтения программы используют мнемонический или символический код. Каждую команду представляют простым трех- или четырехбуквенным мнемоническим символом (мнемоникой). Мнемоника подбирается так, чтобы она напоминала название команды. Написанную с помощью мнемоник программу транслируют в ее двоичный эквивалент. Это можно сделать вручную с помощью таблиц соответствия или использовав специальную программу, которая называется Ассемблером (программный транслятор). Каждый микропроцессор способен выполнять точно определенный для него набор команд. Программист ограничен только этим набором команд.

Классификация команд.

По числу ячеек памяти, необходимых для размещения одной команды, различают команды в одно, два или три слова. Команды длиной в два и три слова требуют для выборки соответственно два и три цикла обращения к памяти.

По функциональным признакам выделяют три большие группы команд: передачи данных, управления и обработки данных. Рассмотрим подробнее основные команды, при этом название команд приведем по-русски.

Команды передачи данных обеспечивают простую пересылку информации без выполнения каких-либо операций обработки. Существуют три вида операндов, участвующих в командах передачи: внутренние регистры микропроцессора, ячейки памяти, регистры устройства ввода-вывода, которые будем называть портами. Можно выделить следующие типы команд:

· ЗАГРУЗИТЬ (ПРОЧИТАТЬ), по которой содержимое одной из ячеек памяти засылается в регистр;

· ЗАПОМНИТЬ (ЗАПИСАТЬ), по которой содержимое регистра засылается в ячейку памяти;

· ПЕРЕСЛАТЬ, по которой содержимое одного регистра пересылается в другой;

· ЗАГРУЗИТЬ НЕПОСРЕДСТВЕННО, по которой в регистр записывается константа, указанная в коде команды;

· ВВОД, по которой содержимое порта засылается во внутренний регистр;

· ВЫВОД, по которой содержимое внутреннего регистра пересылается в порт.

Команды управления, часто называемыми командами перехода, позволяют выполнять различные действия в соответствии со значением внешних сигналов или выработанных внутри системы условий. Команды управления делятся на команды безусловного и условного перехода. К командам безусловного перехода относятся:

· БЕЗУСЛОВНЫЙ ПЕРЕХОД (БП), по которой в программный счетчик записывается содержимое адресного поля в коде команды, то есть обеспечивается переход по аресу, указанному в команде;

· ПРОПУСТИТЬ, по которой пропускается следующая команда в программе;

· БЕЗУСЛОВНЫЙ ПЕРЕХОД С ВОЗВРАТОМ (переход к подпрограмме), по которой в программный счетчик записывается новое содержимое (адрес первой команды подпрограммы), но в отличие от команды БП в памяти сохраняется текущее содержимое программного счетчика. После выполнения подпрограммы по ее последней команде ВОЗВРАТ восстанавливается содержимое программного счетчика.

Команды условного перехода проверяют состояние какого-либо разряда регистра, триггера или другого параметра. От результата проверки зависит будет выполняться переход или нет. К командам условного перехода относятся:

· УСЛОВНЫЙ ПЕРЕХОД (УП) по адресу; в коде команды указывается проверяемое условие:нулевое или ненулевое значение результата, полжительный или отрицатедьный знак результата, наличие или отсутствие сигналов переноса, переполнения и т.д. При выполнении условия обеспечивается переход в программе по адресу, указанному в команде, при невыполнении условия управление передается следующей команде программы;

· УСЛОВНЫЙ ПЕРЕХОД С ВОЗВРАТОМ;

· УСЛОВНО ПРОПУСТИТЬ;

· ЦИКЛ.

Команды обработки данных делятся на арифметические и логические. К арифметическим относятся команды:

· СЛОЖИТЬ содержимое двух регистров или регистра и ячейки памяти;

· ВЫЧЕСТЬ из содержимого ячейки памяти или регистра содержимое регистра;

· УВЕЛИЧИТЬ НА ЕДИНИЦУ (ИНКРЕМЕНТ) содержимое ячейки памяти или регистра;

· УМЕНЬШИТЬ НА ЕДИНИЦУ (ДЕКРЕМЕНТ) содержимое ячейки памяти или регистра;

· СЛОЖИТЬ С УЧЕТОМ ПЕРЕНОСА, по которой выполняется сложение с учетом состояния флага переноса, это позволяет легко организовать обработку чисел большой длины;

· ВЫЧЕСТЬ С УЧЕТОМ ЗАЕМА;

· СДВИГ содержимого ячейки памяти или регистра влево или вправо на один разряд.

К логическим относятся следующие команды:

· И (ЛОГИЧЕСКОЕ УМНОЖЕНИЕ) между двумя операндами;

· ИЛИ (ЛОГИЧЕСКОЕ СЛОЖЕНИЕ) между двумя операндами;

· НЕРАВНОЗНАЧНОСТЬ между двумя операндами;

· ИНВЕРСИЯ содержимого операнда.

Языки программирования для микропроцессоров можно разделить на три основные уровня: машинные, алгоритмические высокого уровня и ассемблера.

Машинные языки находятся на самом нижнем уровне иерархии языков программирования. Будучи языками цифр, они неудобны для описания вычислительных процессов, требуют от программиста больших усилий для написания и отладки программ, хотя программа, написанная на машинном языке, сразу готова для исполнения микропроцессором.

Алгоритмические языки высокого уровня занимают верхнее положение в иерархии языков программирования. Форма языков высокого уровня приближена к привычной математической нотации, обеспечивает естественную форму описания вычислительных процессов. Недостатком является применение трансляторов, неэффективность получаемых после трансляции кодов.

Языки ассемблера, занимая промежуточное положение между машинными языками и языками высокого уровня, объединяют в себе некоторые достоинства самого нижнего и самого верхнегоуровней языков программирования. Транслятор программ с языка Ассемблера гораздо проще и компактнее транслятора для программ, написанных на языке высокого уровня, а результирующая машинная программа на выходе ассемблера получается столь же эффективной, как и программа, которую написали на машинном языке.

 

Имеется три класса средств программирования: редактирующие программы, транслирующие программы, моделирующие и отладочные программы. Каждый из этих классов облегчает выполнение некоторого этапа разработки программ. Все эти средства программирования делятся на кросс-средства и резидентные. Кросс-средства – это программы, которые выполняются не на микроЭВМ, для которого разрабатывается программное обеспечение , а на какой-нибудь другой машине. Резидентные средства – это программы, которые выполняются на микропроцессоре, для которого разрабатывается программное обеспечение.

Редактирующие программы – это программы, облегчающие создание исходных программ. Эти программы позволяют производить набор исходных текстов, их корректировку. Эти программы оперируют с исходной программой как с текстом, совершенно не учитывая те синтаксические правила, которым должна удовлетворять программа.

Транслирующие программы обеспечивают получение объектной программы из программы, написанной на языке ассемблера в среде какой-то редактирующей программы. Имеются два вида транслирующих программ: компиляторы и интерпритаторы. Компиляторы транслируют весь текст программы в машинный код в ходе одного непрерывного процесса. При этом создается полная программа в машинных кодах, которую затем можно выполнить без участия компилятора. Интерпретатор – это программа, осуществляющая пошаговую трансляцию входной программы с последующим исполнением машинной программы, полученной на каждом шаге трансляции.

Моделирующие и отладочные программы – это программы, позволяющие отлаживать объектную программу без участия самого микропроцессора, для которого эта программа предназначена. Моделирующие программы позволяют: оперировать и выводить на дисплей содержимое памяти моделируемой микроЭВМ и регистров микропроцессора, устанавливать контрольные точки останова, выполнять программу по шагам с приостановом после каждой команды, выводить информацию о времени выполнения программы и т.д. Однако, независимо от того насколько хороша моделирующая программа, она никогда не может заменить полностью отладку программы на реальном микропроцессоре. Это объясняется тем, что специфические временные соотношения и условия внешнего окружения аппаратуры микропроцессора невозможно смоделировать полностью.