- •Министерство образования Российской Федерации
- •Самарский государственный технический университет
- •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
- •Список литературы
Арифметические и логические команды
Все рассмотренные выше команды были либо командами переходов, либо командами пересылки информации. Обратимся теперь к командам обработки информации. К ним относятся команды сложения, вычитания, логического И, логического ИЛИ, команды сдвигом и т. д. В качестве типичного представителя этого класса рассмотрим «сложение с- регистром и переносом» ADC R.
На рис. 4.13 показаны потоки информации, когда R задает любой общий регистр в диапазоне 016, . . ., Е16. В соответствии с табл. 4.2 это однобайтовая команда. Следовательно, после второго синхроимпульса первого и единственного машинного цикла содержимое аккумулятора и регистра R может быть подано на входы АЛУ в качестве операндов. АЛУ по этим двум операндам и переносу С (считая его переносом в младший разряд) вычисляет 8-разрядную сумму и новое значение переноса.
Рис. 4.13 Информационные потоки в фазе выполнения команды ADC R, когда R 11112
Таким образом, по третьему синхроимпульсу машинного цикла сумма передается в аккумулятор, а результирующий перенос — в триггер переноса С.
Выполнение команды ADC R при R = 11112 показано на рис. 4.14.
Рис. 4.14 Информационные потоки в фазе выполнения команды
ADC R, когда R = 11112
В этом случае второй машинный цикл затрачивается на выборку операнда из памяти по адресу на регистрах Н и L. Этот операнд временно заносится в младшие разряды регистра адреса данных и оттуда через R-селектор в нужный момент подается на вход АЛ У.
Команды ввода/вывода
Теперь рассмотрим группу команд, обеспечивающих передачу информации между микропроцессором и устройствами ввода/вывода. Для конкретности остановимся на команде OUT. Поскольку это двух байтовая команда, второй байт во втором машинном цикле будет помещен в регистр адреса данных в младшую его половину. В связи с задержками распространения сигнала в шинах, а также в логических схемах устройств вывода и самого микропроцессора в фазе выполнения команды используется третий машинный цикл.
Этот цикл иллюстрирует рис. 4.15
Рис. 4.15 Информационные потоки в фазе выполнения команды OUT
По первому синхроимпульсу третьего машинного цикла содержимое младшей половины регистра адреса данных подается на адресную шину, а содержимое аккумулятора через г-селектор — на шину данных. Все устройства вывода декодируют содержимое младшей половины адресной шины. Однако только то устройство, которое опознает код на адресной шине как свой код, подает разрешающий сигнал на прием информации с шины данных в свой входной регистр. По второму синхроимпульсу третьего машинного цикла БУС подаст сигнал на линию «вывод» шины управления, который стробирует передачу содержимого шины данных в открытый для приема регистр.
Специальные команды
Это последний класс команд в наборе команд микропроцессора. Они улучшают как эффективность программ, так и удобство их написания.
Поскольку пару общих регистров Н и L можно использовать для обращения к ячейкам памяти при косвенной адресации, команды IHL и DHL увеличения и уменьшения значения, хранящегося в этих регистрах, оказываются очень удобными для модификации адресов. Команды разрешения и запрещения прерываний необходимы для обслуживания запросов прерывания различных устройств. Пустая команда (NOP) реализует программную задержку времени. Она бывает нужна при взаимодействии с медленными устройствами ввода/вывода. Команда останова (HLT), очевидно, позволяет закончить выполнение программы.
Две оставшиеся команды в классе специальных команд это команды PUSH и POP, работающие со стеком. Когда выполняется подпрограмма или программа обработки прерывания, ей для ввода, вывода и обработки данных нужны общие регистры. Однако, как правило, они содержат информацию, нужную основной программе или подпрограмме. Поэтому содержимое трех верхних общих регистров Асс, Н и L вместе с содержимым триггера переноса С можно запомнить в стеке командой PUSH и затем в нужный момент восстановить командой POP. Это позволяет использовать регистры Асс, Н, L и триггер С при выполнении подпрограммы и вместе с тем сохранять их содержимое. Более того, поскольку информация сохраняется в стеке, процедура сохранения/восстановления может быть повторена в подпрограмме или в программе обработки прерываний, обеспечивая много уровней вложения.
Фаза выполнения команды PUSH проходит за два синхроимпульса. По третьему синхроимпульсу командного цикла в стек опускается значение переноса С и аккумулятора, а затем по следующему синхроимпульсу, который фактически будет первым импульсом в следующем командном цикле, в стек опускается значение регистров Н и L. Такое совмещение командных циклов в данном случае вполне допустимо, поскольку информационные потоки не интерферируют друг с другом. Потоки информации в фазах выполнения команд POP и PUSH в точности противоположны.
В приложении в конце книги приведены все команды нашего иллюстративного микропроцессора. Табл. П1 содержит команды в алфавитном порядке, а табл. П2 — в порядке кодов операций.