
- •Министерство образования Российской Федерации
- •Самарский государственный технический университет
- •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
- •Список литературы
Директивы ассемблера
Директивы ассемблера служат для управления некоторыми специальными, типичными для всех ассемблеров функциями. Директивы ассемблера, задаваемые в программе на языке ассемблера, содержат информацию, нужную для управления трансляцией с исходного на объектный язык, но никогда не выполняются как команды при работе объектной программы. Тем не менее директивам присвоены мнемонические коды, которые записываются в поле операции.
С помощью директив одного типа определяются слова данных. Они позволяют ассемблеру сформировать константу и поместить ее в ячейку памяти. Значение константы задается в поле операндов, а ее символический адрес — в поле метки. Аналогичным образом можно задать символ в коде ASCII. Предположим, например, что мнемонический код операции DB (Define a Byte — определить байт) соответствует директиве определения байта. Тогда при трансляции предложения
CONST : DB 53H
ассемблер поместит шестнадцатеричное число 53 в ячейку с символическим адресом CONST.
С помощью директив другого типа можно зарезервировать группу ячеек памяти и дать этой группе символическое имя. Это оказывается полезным, когда нужно отвести место для входных, выходных или промежуточных данных. Число резервируемых ячеек указывается в поле операндов, а символический адрес первой ячейки группы - в поле метки. Директива такого типа встречается в программе в табл.5.9 и имеет мнемонический код операции RES (от REServe - резервировать). Встретив предложение
NUM: RES 10D
ассемблер зарезервирует десять ячеек памяти (поскольку D - это код десятичной системы), причем первой из них будет присвоен символический адрес NUM.
Помимо уже упомянутых директив, существуют директива для задания абсолютного адреса в объектной программе и директива для указания конца программы. Вторая из них присутствует в программе в табл. 5.9 и имеет обозначение END (конец). Она просто указывает ассемблеру, где заканчивается исходная программа. Чтобы пояснить директиву, задающую абсолютный адрес, предположим, что ее мнемоническое обозначение ORG (от ORiGin — начало). Тогда предложение
ORG 1000H
информирует ассемблер о том, что следующая команда должна иметь шестнадцатеричный адрес 1000. Поэтому, если бы такое предложение предшествовало программе в табл. 5.9, адрес команды LRI 1, Н (NUM) оказался бы равным 1000; в то же время, если бы это предложение оказалось между предложениями HLT и RES, группа ячеек NUM расположилась бы в памяти, начиная с адреса 1000.
Макрокоманда
Некоторые ассемблеры предоставляют программисту возможности для расширения языка ассемблера при помощи макрокоманд. Макрокоманды особенно удобны в тех случаях, когда некоторая последовательность команд повторяется в программе много раз. В таких случаях можно определить макрокоманду, соответствующую этой последовательности. Макрокоманда становится составной частью языка ассемблера, и ее после этого можно использовать в программе как угодно часто. Каждое вхождение макрокоманды в программе при трансляции' заменяется ассемблером на последовательность машинных команд, которые входят в определение макрокоманды.
Очень важно понимать разницу между макрокомандой и подпрограммой. К подпрограмме обращаются при помощи команды перехода на подпрограмму и возвращаются из нее по команде возврата. Сама подпрограмма находится в памяти в единственном экземпляре, к которому, вообще говоря, обращаются несколько раз. Макрокоманде соответствует последовательность команд, и эта последовательность вставляется в программу на место каждого вхождения макрокоманды. Таким образом, одна и та же последовательность команд повторяется в программе много раз, возможно, только с изменением адресов операндов от одного вхождения к другому. Поэтому, вообще говоря, программа с макрокомандами требует больше места в памяти, чем программа, использующая подпрограммы. Однако при использовании макрокоманд накладные расходы на связи с подпрограммой исчезают и скорость работы программы увеличивается.
Приложение П1