- •Министерство образования Российской Федерации
- •Самарский государственный технический университет
- •2. Оформление курсового проекта
- •3. Описание вариантов заданий
- •Перечень операций подлежащих программированию
- •4. Архитектура микропроцессоров
- •4.1. Микрокомпьютер
- •4.2. Структура микропроцессора
- •4.3. Блок управления и синхронизации
- •4.4. Система команд
- •4.4.1. Фаза выборки и дешифрации
- •Обозначения, используемые при описании команд,
- •Команды передач управления
- •Команды обращения к подпрограммам
- •Арифметические и логические команды
- •Команды ввода/вывода
- •Специальные команды
- •4.4.2. Фаза выполнения
- •Команды пересылки
- •Команды с непосредственным адресом
- •Команды обращения к памяти
- •Команды передачи управления
- •Команды обращения к подпрограммам
- •Арифметические и логические команды
- •Команды ввода/вывода
- •Специальные команды
- •4.5. Способы адресации
- •Прямая адресация
- •Непосредственная адресация
- •Индексная адресация
- •Косвенная адресация
- •Относительная адресация
- •Страничная адресация
- •4.6. Некоторые другие команды, специфичные для микропроцессоров
- •Арифметические и логические команды с операндами в главной памяти
- •Команды условных переходов
- •Команды обработки данных
- •5. Программирование для микропроцессоров
- •5.1. Программирование на машинном языке
- •Пример программы: «прибавить константу к числу в памяти и записать результат снова в память»
- •5.2. Разветвления в программах
- •5.3. Программирование циклов
- •Программа вычисления суммы десяти 8-битовых чисел без знаков
- •5.4. Программирование сложных разветвлений
- •Программа сложного разветвления, использующая таблицу переходов
- •5.5. Подпрограммы
- •Вход в подпрограмму и выход из подпрограммы
- •Параметры подпрограммы
- •Пример передачи параметров от главной программы в подпрограмму через общие регистры
- •Сложение с п-кратной точностью
- •Подпрограмма сложения чисел с двойной точностью
- •Умножение
- •5.6. Загрузка программ
- •Подпрограмма умножения целых положительных чисел Распределение общих регистров: r2: счетчик, r3: множимое y, r4: множитель X, r5: ст. Часть произведения Рн, r6:мл. Часть произведения pl
- •80 (Маска)
- •Программа-загрузчик
- •5.7. Программирование на языке ассемблера
- •Ассемблеры
- •Язык ассемблера
- •Программа на языке ассемблера, соответствующая программе табл. 5.3
- •Директивы ассемблера
- •Макрокоманда
- •Список команд иллюстрированного микропроцессора
- •Список команд иллюстративного микропроцессора
- •Условные графические обозначения в схемах
- •Продолжение Приложение п3
- •Продолжение Приложение п3
- •Продолжение Приложение п3
- •Список литературы
- •Содержание и объем курсового проекта …………………………….
- •Оформление курсового проекта ……………………………………...
- •Продолжение Приложение п2
- •Продолжение Приложение п2
- •Продолжение Приложение п2
- •Продолжение Приложение п2
- •Приложение п2
- •Приложение п2
- •Список литературы
Команды передачи управления
Команды передач управления, или переходы, составляют очень важный класс в системе команд любого компьютера. Они служат для изменения нормальной последовательности выполнения команд или безусловно, или в результате анализа определенных условий. В микропроцессорах обычно бывает много команд такого типа. Типичным представителем можно считать команду «переход при ненулевом переносе» (JCN).
Поскольку это трехбайтовая команда, фаза выполнения может быть начата на третьем синхроимпульсе третьего машинного цикла. По этому синхроимпульсу БУС опрашивает состояние триггера переноса С. Если состояние С удовлетворяет заданному условию, т. е. если С=1, то, как показано на рис.4.10, содержимое регистра адреса данных передается на программный счетчик.
Таким образом, второй и третий байты команды становятся адресом команды, которая будет выбираться следующей. Если же, напротив, состояние триггера С не удовлетворяет условию, т. е. С=0, то программный счетчик сохраняет то значение, которое он получил в фазе выборки-дешифрации. Поэтому JCN не окажет влияния на порядок выборки команд.
Переходы описанного типа называются условными передачами управления или условными переходами, поскольку программный счетчик изменяется только при выполнении некоторых условий. Другими примерами команд такого типа могут служить «переход при нулевом аккумуляторе» (JAZ), «переход при отрицательном аккумуляторе» (JAM) и др.
Рис. 4.10 Информационные потоки в фазе выполнения команды JCN при С=1, При С=0 перехода не происходит
Рис. 4.11 Взаимодействие между главной программой и
подпрограммой
Рис. 4.12 (а) Команды обращения к подпрограммам. Информационные потоки в фазе выполнения команды JMS
Рис. 4.12 (б) Команды обращения к подпрограммам. Информационные потоки в фазе выполнения команды RET
К другому типу переходов относятся команды безусловной передачи управления. По этим командам программный счетчик изменяется всегда, что вызывает переход. В нашем микропроцессоре безусловный переход можно выполнить по прямому адресу (JMP) или по косвенному (JHL).
В некоторых микропроцессорах можно встретить команды обхода, или пропуска (skip instructions): если заданное условие выполнено, следующая команда пропускается; в противном случае она выполняется. Одно из преимуществ команд пропуска в том, что в них не указан адрес перехода, и, следовательно, они представляются меньшим числом байтов.
Команды обращения к подпрограммам
Очень часто одну и ту же процедуру нужно выполнить в нескольких точках программы. Вместо того чтобы повторно записывать команды этой процедуры в каждой точке, удобнее и эффективнее оформить ее в виде подпрограммы. На рис.4.11 показано взаимодействие главной программы и подпрограммы.
Разумеется, должен быть обеспечен возврат в главную программу в ту же точку, откуда было сделано обращение, или в некоторую точку, четко определенную относительно точки обращения.
Общий подход к решению этой проблемы состоит в том, чтобы предусмотреть специальные команды, с помощью которых можно было бы запомнить исходную точку, а затем вернуться к ней. В нашем иллюстративном микропроцессоре эти функции выполняют две команды: «переход на подпрограмму» (JMS) и «возврат из подпрограммы» (RET). Информационные потоки для этих команд приведены на рис 4.12.
Сначала рассмотрим команду JMS. По третьему синхроимпульсу третьего машинного цикла содержимое регистра адреса данных, равное адресу входа в подпрограмму, поступает на программный счетчики, тем самым осуществляется переход. Одновременно старое содержимое программного счетчика, которое уже было продвинуто и указывало на следующую за JMS команду, помещается в стек. После завершения подпрограммы команда RET позволяет вернуться в главную программу. При ее выполнении стек поднимается, и на программном счетчике восстанавливается адрес команды в главной программе на которую следует вернуться.
Совершенно ясно, что та же пара команд позволяет подпрограмме обратиться в свою очередь к другой подпрограмме и т. д. Это называется вложенными обращениями или вложенными подпрограммами. Единственное ограничение на число уровней вложения налагается размерами стека, поскольку, когда стек опускается, содержимое его нижнего регистра теряется.
Поскольку подпрограмма — это тоже программа. то ей нужны данные, над которыми производятся вычисления. Вообще говоря, эти данные, называемые параметрами или аргументами подпрограммы зависят от той точки, откуда было сделано обращение к подпрограмме. Один из простейших способов передачи параметров — это загрузка их в общие регистры непосредственно перед выполнением команды JMS. При таком подходе подпрограммы составляются в предположении, что необходимые параметры будут находиться в общих регистрах, откуда их можно будет легко выбрать. Аналогично подпрограмма может оставить в общих регистрах вычисленные ею результаты для передачи их главной программе. Более детально организацию подпрограмм мы рассмотрим в следующей главе.