Добавлен: 27.04.2024
Просмотров: 180
Скачиваний: 0
СОДЕРЖАНИЕ
Микропроцессорные устройства систем управления
1. Общая характеристика микропроцессоров.
1.1. Структура микропроцессора и его реализация.
1.2. Классификация современных микропроцессоров и их характеристики.
1.3. Принципы управления микропроцессорами.
1.4. Структура и типы команд микропроцессора.
1.5. Способы адресации информации и прерывание работы в микропроцессоре.
Косвенная регистровая адресация.
1.6. Организация ввода и вывода данных в микропроцессоре.
1.7. Система команд микропроцессора.
2. Принципы организации и применения микропроцессорных систем.
2.1. Особенности организации структуры МП-системы.
2.2. Структура МП-системы с общей шиной.
2.4. Применение МП-системы в качестве контроллера и системы сбора данных.
3. Основы программирования микропроцессоров.
3.1. Языки программирования микропроцессоров.
3.2. Программирование на языке ассемблера.
3.3. Средства разработки и отладки прикладных программ.
Средства отладки и диагностирования
Аппаратно-программные средства:
4. Типовые микропроцессоры и их применение.
4.1. Структура и характеристика типовых МП.
4.3. Примеры написания программ.
5. Мультипроцессорные системы, транспьютеры.
5.1. Классификация систем параллельной обработки данных
Конвейерная и векторная обработка.
Многопроцессорные машины с SIMD-процессорами.
Многопроцессорные системы с общей памятью
5.2 Мультипроцессорная когерентность кэш-памяти.
5.3. Многопроцессорные системы с локальной памятью и многомашинные системы
5. Команда RET служит для возврата из подпрограммы. Она является последней командой подпрограммы.По этой команде адрес возврата из стека пересылается обратно в счетчик команд PC. После этого продолжается выполнение основной программы с того места, где оно было прервано обращением к подпрограмме.
6. Команда R-CON - это команда условного возврата из подпрограмм. Ее выполнение зависит от значения используемого в команде условия (см. выше).
Команды ввода-вывода и специальные.
Команды ввода-вывода служат для программного инициирования процесса обмена данными с внешними устройствами ввода-вывода, подключаемых к МП посредством портов. Как и ячейка памяти, каждый порт имеет свой адрес, обозначаемый сокращением port. В большинстве МП обмен информацией с портами осуществляется через аккумулятор.
1. По команде IN port данные из порта ввода, адрес которого содержится в команде, передаются в аккумулятор.
2. По команде OUT port данные из аккумулятора передаются в порт вывода, адрес которого содержится в команде.
Каждый МП обладает индивидуальным набором специальных команд, необходимых для управления и задания режимов его работы и выполнения программ. К специальным командам в большинстве случаев можно отнести следующие команды.
3. Команда EI необходима для разрешения режима ввода-вывода данных по прерываниям. Команда устанавливает выходной управляющий сигнал “Разрешение прерывания” равным 1, что позволяет внешнему устройству инициировать процесс обмена данными с МП и обработку по мере их поступления.
4. Команда DI запрещает вышеописанную операцию путем устанавки выходного управляющего сигнала “Разрешение прерывания” равным 0.
5. Команда NOP означает пустую операцию, во время которой происходит только увеличение на единицу содержимого счетчика команд PC. Использование команды NОР позволяет организовать временную задержку.
6. Команда HLT переводит МП в состояние ОСТАНОВ.
4.3. Примеры написания программ.
Рассмотрим примеры написания простейших фрагментов, которые могут встретиться в программе. При разборе примеров будем пользоваться условными регистрами: A – аккумулятор; B, C, D, E, H, L – регистры общего назначения, которые могут объединяться в регистровые пары BC, DE, HL. Причем регистровая пара HL будет выполнять функции адресного указательного регистра, т.е. регистра, указывающего на адрес (содержащего адрес) ячейки памяти M, к которой идет обращение в данной команде при косвенной регистровой адресации. Такой синтаксис заимствован из языка Ассемблера МП Intel8080.
Пример 1. Проверить состояние третьего разряда регистра B. Если значение этого разряда равно 1, то выполняется следующая по программе команда. В противном случае выполняется команда, адрес которой 00АА16.
Решение. Для микроконтроллеров, представляющих собой функционально полную МП-систему, реализованную в одном кристалле микросхемы, как правило, характерно наличие в системе команд специальных команд побитовых операций. С их помощью можно выделять определенные биты, записывать в них нули, единицы, инвертировать их значения. Многие МП таких команд не имеют. Но это не значит, что операции над отдельными битами для них неприемлемы. Для выделения каких-либо разрядов имеющегося байта выполняется операция поразрядного маскирования, с помощью которой из рассмотрения исключаются не интересующие нас разряды. В даннмо случае маскирование производится путем поразрядного логического умножения исходного байта на маску, в качестве которой используется набор битов, равных нулю во всех разрядах, кроме проверяемого третьего.
Очевидно, что результат умножения будет равен или не равен нулю в зависимости от того, равно или не равно нулю значение проверяемого разряда исходного байта. Таким образом, представленная задача решается путем выполнения следующей последовательности операторов:
Метка | Операция | Операнд | Комментарии |
| MVI | A,00000100b | ;поместить в аккумулятор маску 000001002. |
| ANA | B | ;выполнить поразрядное логическое умножение маски, содержащейся в аккумуляторе и проверяемого регистра B. |
| JZ | 00AAh | ;если результат равен нулю (в третьем разряде регистра B был ноль), перейти к команде с адресом 00AA16. |
| --- | --- | ;выполнение дальнейшей программы в противном случае. |
Пример 2. Не изменяя значений остальных разрядов, записать единицы в первый и второй разряды, ноль в пятый разряд и изменить на противоположное значение шестого разряда содержимого ячейки памяти с адресом A5C216.
Решение. Очевидно, что при поразрядном логическом сложении исходного байта и маски, значения тех разрядов исходного байта, в которых маска содержит нули, не меняются, а тех разрядов исходного байта, в которых маска содержит единицы, станут равными единице. Для записи нуля в интересующие разряды исходного байта необходимо, как и в предыдущем примере, логически умножить этот байт на маску с нулями в этих разрядах. При выполнении поразрядной логической операции ИСКЛЮЧАЮЩЕЕ ИЛИ над исходным байтом и маской, значения тех разрядов исходного байта, в которых маска содержит нули, не меняются, а значения остальных разрядов изменятся на противоположные.
Поскольку в программе придется три раза подряд выполнить логические операции над исходным байтом и соответствующими масками, результаты которых будут каждый раз фиксироваться в аккумуляторе, то целесообразно исходный байт поместить в регистр-накопитель аккумулятор, а выполнять логические операции с помощью команд прямой адресации над содержимым аккумулятора и задаваемых в командах в качестве операндов масок.
Модификацию необходимо выполнить над содержимым ячейки памяти. Как мы договорились, это содержимое поместим в аккумулятор. В аккумуляторе сформируется и результат последней выполненной команды. Но по условию изменить надо содержимое ячейки памяти, т.е. результат нужно будет из аккумулятора переслать обратно в ячейку памяти. Таким образом, необходимо будет дважды обратиться к одной и той же ячейки памяти. В тех случаях, когда необходимо многократно обращаться к ячейке памяти с одним и тем же адресом подряд, или адрес ячейки памяти меняется по определенному закону, например инкрементируется или дикрементируется при каждом обращении, удобно использовать косвенную регистровую адресацию. Это позволяет повысить время выполнения программы, один раз задав адрес в указательный адресный регистр, а само обращение к памяти выполнять с помощью быстрых однобайтовых команд косвенной адресации. В принятых нами обозначениях такая адресация реализуется путем обращения к ячейке памяти M как к внешнему регистру, адрес которой указывается регистровой парой HL.
Поставленная задача может быть решена следующей последовательностью команд:
Метка | Операция | Операнд | Комментарии |
| LXI | H,0A5C2h | ;загрузить регистровую пару HL (определить адрес) адресом A5C216 ячейки памяти. |
| MOV | A,M | ;переслать в аккумулятор содержимое ячейки памяти с адресом A5C216. |
| ORI | 00000011b | ;произвести поразрядное логическое сложение содержимого аккумулятора и маски 000000112 – записать единицы в первый и второй разряды исходного байта. |
| ANI | 11101111b | ;произвести поразрядное логическое умножение содержимого аккумулятора и маски 111011112 – записать ноль в пятый разряд исходного байта. |
| XRI | 00100000b | ;произвести поразрядное логическое «сложение по модулю два» содержимого аккумулятора и маски 001000002 – изменить на противоположное значение шестого разряда исходного байта. |
| MOV | A,M | ;переслать результат модификации, сформировавшийся в аккумуляторе, обратно в ячейку памяти с адресом A5C216. |
| --- | --- | ;продолжение программы. |
Пример 3. Содержимое предварительно обнуленного регистра B увеличивать на единицу до тех пор, пока оно не станет равным содержимому регистра C, после чего перейти к выполнению дальнейшей программы.
Решение. Очевидно, что для решения поставленной задачи необходимо организовать циклический процесс, на каждом шаге которого будет выполняться инкрементирование содержимого регистра B и сравнение его текущего значения с содержимым регистра C. Как только содержимые этих регистров сравняются, будет осуществлен выход из цикла. Для установления факта равенства необходимо использовать команду сравнения. Пока не будет иметь место равенство, разница содержимых этих регистров будет не нулевой, т.е. признак нуля регистра флагов будет иметь нулевое значение. В этом случае необходимо будет перейти к следующему шагу цикла, сославшись на метку первой команды тела цикла командой условного перехода по отсутствию нулевого результата. Как только команда сравнения даст нулевой результат вычитания содержимых регистров B и C, условие ненулевого результата не выполнится и цикл будет завершен. Текст программы может выглядеть следующим образом:
Метка | Операция | Операнд | Комментарии |
| MOV | A,C | ;переслать содержимое регистра C в аккумулятор. |
| MVI | B,00h | ;обнулить регистр B, как это требуется в задании. |
META: | INR | B | ;увеличить на единицу содержимое регистра B, как это требуется в задании. |
| CMP | B | ;содержимое регистра B сравнить с аккумулятором (с занесенным в него содержимым регистра C). |
| JNZ | META | ;перейти к команде с адресом META, если содержимое регистра B не равно содержимому аккумулятора, цикл не завершен. |
| --- | --- | ;в противном случае содержимое регистров B и C сравнялись и будет выполняться дальнейшая программа. |
Пример 4. Обнулить 50 ячеек памяти в сторону уменьшения их адресов, начиная с ячейки с адресом 800016.
Решение. Как и в предыдущем примере, очевидно, что в данном случае нет необходимости обнулять все 50 ячеек памяти, напрямую адресуясь к ним пятидесятью командами прямой адресации. Удобнее всего организовать цикл из пятидесяти шагов, записывая в каждом шаге цикла в ячейку памяти, как во внешний регистр M, ноль, косвенно адресуясь к ней через содержимое указательной регистровой пары HL. Предварительно в HL заносится адрес 800016 первой ячейки и далее содержимое HL уменьшается на единицу, формируя, таким образом, адрес текущей обнуляемой ячейки в текущем шаге цикла. Для того, чтобы проконтролировать количество шагов цикла, необходимо организовать счетчик. В качестве счетчика можно использовать любой свободный регистр общего назначения, начальное содержимое которого будет равно количеству шагов цикла – 50. Далее на каждом шаге цикла содержимое этого регистра будет дикрементироваться на единицу. Цикл будет повторяться до тех пор, пока содержимое счетчика шагов цикла не станет равным нулю. В качестве условия перехода в начало тела цикла можно использовать, таким образом, ненулевой результат дикремента счетчика шагов цикла. Фрагмент программы может иметь следующий вид.