- •Министерство образования Российской Федерации
- •Самарский государственный технический университет
- •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
- •Список литературы
Индексная адресация
В некоторых микропроцессорах эффективный адрес может быть получен сложением исходного адреса с содержимым заданного регистра. Такой способ называется индексной адресацией, а соответствующий регистр называется индекс-регистром.
Обычно предусматриваются специальные команды для увеличения и уменьшения содержимого индексных регистров, и это облегчает последовательную обработку элементов таблиц в программных циклах. Иногда содержимое индекс-регистров автоматически увеличивается или уменьшается каждый раз, когда регистр используется для образования эффективного адреса. Этот способ называется автоиндексированием.
Косвенная адресация
Косвенная адресация — это очень эффективный и важный способ адресации в микропроцессорах. При косвенной адресации исходный адрес служит указателем на ячейку, в которой находится эффективный адрес. Таким образом, исходный адрес это «адрес адреса».
Случай, когда исходный адрес указывает на общий регистр, содержащий эффективный адрес, по существу, является частным случаем косвенной адресации. Он называется регистровой косвенной адресацией. Регистровая косвенная адресация повышает эффективность программы, поскольку в команде в этом случае адресное поле должно вмещать только ссылку на общий регистр.
Примером регистровой косвенной адресации может служить команда ADD R при R = 1111. Значение 1111 в младших четырех битах команды — это ссылка на общие регистры Н и L. Содержимое этих регистров воспринимается как 16-разрядный эффективный адрес.
Относительная адресация
Относительная адресация в чем-то близка к индексной. В ней эффективный адрес получается прибавлением исходного адреса к содержимому программного счетчика. Исходный адрес интерпретируется как число со знаком, так что относительная адресация, например, в команде перехода позволяет передать управление вперед или назад от текущего адреса на программном счетчике на заданное в программе «расстояние». Этот способ адресации особенно эффективен в командах переходов, когда переход осуществляется в близкие ячейки, поскольку не требует задания полного адреса, по которому осуществляется переход.
Страничная адресация
Часто объем памяти микропроцессора превышает «адресное пространство», т. е. максимальное число адресов для данного формата команд. В таком случае память можно разбить на страницы, размер которых определяется максимальным числом ячеек, адресуемых в команде. Например, если на адрес отводится только 8 разрядов, то каждая страница должна содержать 28=256 ячеек. Страницам присваиваются номера в последовательном порядке, начиная с 0. В нашем примере страница 0 будет содержать ячейки от 0 до 255, страница 1 — ячейки 256—511 и т. д. При таком подходе программный счетчик можно считать состоящим из двух частей. Старшие разряды — это номер страницы, а младшие — адрес слова внутри страницы.
Метод адресации к текущей странице сводится к тому, что исходный адрес в команде считается адресом внутри той страницы, где находится сама команда, т. е. «сдвигом» относительно начала страницы. Этот метод позволяет адресовать ячейки только в текущей странице, а эффективный адрес получается, как сумма адреса начала страницы и исходного адреса в команде. Таким образом, старшие разряды эффективного адреса — это просто старшие разряды программного счетчика, а младшие разряды — это исходный адрес в самой команде.
Другой метод страничной адресации называется адресацией к нулевой странице. Исходный адрес трактуется как адрес внутри нулевой страницы. Старшие разряды эффективного адреса полагаются равными нулю, а младшие — равными исходному адресу. Адресация и к текущей, и к нулевой странице является одной из форм относительной адресации и называется страничной относительной адресацией.
Описанные методы страничной адресации позволяют обращаться только к ячейкам нулевой и текущей страниц. Чтобы обратиться к любой ячейке памяти, можно воспользоваться косвенной адресацией. Если, например, нужно обратиться к ячейке в странице 7, а программный счетчик показывает, что текущая команда находится в странице 3, то адрес, относящийся к странице 7, нужно запасти либо в странице 0, либо в странице 3, и тогда операнд в странице 7 будет доступен по косвенному адресу.