- •Магомедов и. А. Микропроцессорные системы. Аппаратные и программные средства.
- •Глава 1. Микропроцессоры
- •Глава II. Программирование микропроцессоров
- •Глава III. Лабораторный практикум по программированию мп i80х86
- •Глава 1. Микропроцессоры
- •1.1. Назначение микропроцессоров
- •1.2. Универсальные микропроцессоры
- •1.2.2. Микропроцессоры компании amd
- •1.2.3. Микропроцессоры компании Cyrix
- •1.2.4. Микропроцессоры с архитектурой Alpha
- •1.2.5. Микропроцессоры с архитектурой sparc
- •1.2.6. Микропроцессоры Hewlett-Packard ра-8000
- •1.3. Микропроцессоры обработки сигналов
- •1.3.1. Сигнальные микропроцессоры компании
- •1.3.2. Сигнальные микропроцессоры компании Motorola
- •1.3.3. Микропроцессоры семейства dsp 560хх
- •1.4. Медийные микропроцессоры
- •1.5. Транспьютероподобные микропроцессоры
- •1.6. Нейропроцессоры
- •Глава II. Программирование микропроцессоров
- •2.1. Программная модель 32-разрядных процессоров
- •2.1.2. Типы данных
- •2.1.3. Регистры процессора
- •2.2. Форматы команд
- •2.3. Выбор операнда
- •2.4. Режимы адресации
- •Вопросы для самоконтроля к главе 2
- •Глава III. Лабораторный практикум по программированию мп i86
- •Обобщенная структурная схема микропроцессора х86
- •Организация основной памяти и средства аппаратной поддержки управления памятью
- •Выполнение программы
- •Формат операторов ассемблера
- •Определение полей памяти для размещения данных.
- •3.2. Операнды команд ассемблера
- •Команда пересылки данных
- •Команда загрузки исполнительного адреса
- •Команды загрузки указателя.
- •Команда записи в стек
- •Команда обмен данными
- •Команды сложения/ Команды вычитания
- •Команда изменения знака
- •Команда добавления /вычитания единицы
- •Команда сравнения
- •Команды умножения/ деления
- •Команда преобразования байта в слово, а слова - в двойное слово.
- •Команды передачи управления
- •Команды условного перехода
- •Команды организации циклической обработки
- •Команда перехода по обнуленному счетчику
- •Команды организации цикла с условием
- •Команды вызова подпрограмм
- •Команда возврата управления
- •Команды обработки строк
- •Логические команды
- •2. Программирование циклических процессов.
- •3. Моделирование одномерных массивов
- •4. Моделирование матриц
- •5. Преобразования ввода-вывода.
- •3.4. Основные команды отладчика afd
- •Fspec определяет имя файла, наименованного в соответствии с соглашениями dos. Для команды l расширением по умолчанию является “exe”;
- •String задает список значений или ascii строк (строка заключена в кавычки) разделенных пробелами или запятой.
- •Например: 1234 bx, ‘tromb’ ff.
- •Лабораторная работа № 1 Создание выполнимого файла, работа в отладчике, изучение оператора пересылки mov
- •Оператор mov
- •Индивидуальные задания
- •Лабораторная работа № 2 Сегментация памяти, директивы ассемблера
- •Прямая адресация
- •Косвенная адресация
- •Директива assume
- •Индивидуальные задания
- •Лабораторная работа №.3 Директивы equ, label, команды сложения и вычитания Директива equ
- •Директива label
- •Команды сложения и вычитания
- •Индивидуальные задания Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Вариант 11.
- •Вариант 12.
- •Лабораторная работа № 4 Изучение операторов обмена xchg и xlat
- •Индивидуальные задания Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 7.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Вариант 11.
- •Вариант 12.
- •Система команд процессораi486
- •П1. Команды пересылки данных
- •П2. Арифметические команды
- •П3. Логические команды
- •П4. Команды переходов
- •П5. Команды процессора i486
2.2. Форматы команд
Информация, закодированная в команде, включает код операции, тип операндов для данной операции и адреса размещения этих операндов [33, 34]. Если операнд находится в памяти, то в команде содержится явное или неявное указание на сегмент, содержащий указанный операнд.
Общий формат команд процессора приведен на рис. 2.4, где обозначены: Base – база, mod – режим, reg/m – регистр/память, Index – индекс, Scale – масштаб.
Команды состоят из отдельных полей и имеют различные форматы. Из всех описанных ниже полей команд только код операции обязательно присутствует в команде. Остальные поля могут отсутствовать, что определяется операцией, местом хранения операндов, их типом [35, 36].
Префиксы. Один или более байтов, предшествующих команде и модифицирующих операцию, выполняемую командой. Следующие префиксы могут использоваться в прикладных программах [32-34]:
З
амена
сегмента,
которая указывает в явной форме на
используемый сегментный регистр
выполняемый командой вместо сегментного
регистра, используемого по умолчанию.
Размер адреса, который определяет размерность адреса в 16 бит или 32 бита. Любая из этих разрядностей может быть выбрана по умолчанию, префикс выбирает определенную разрядность.
Размер операнда, который определяет размерность данных, равную 16 битам или 32 битам. Любая из этих разрядностей может быть выбрана по умолчанию, префикс выбирает определенную разрядность данных.
Повторение, которое используется с командами обработки строк. Обеспечивает обработку каждого элемента строки одной последовательностью команд.
Код операции. Определяет операцию, выполняемую командой. Некоторые операции имеют несколько кодов, определяющих модификации операции.
Спецификатор регистра. Команда может определять один или два регистра для хранения операндов (байты mod/reg и sib).
Спецификатор режима адресации. Он определяет место хранения операнда в регистре или памяти. Если операнд хранится в памяти, то спецификатор определяет необходимось использования смещения, базового регистра, индексного регистра и масштабирования.
SIB (ss, Index, Base) байт. Когда спецификатор режима адресации указывает на использование индексного регистра для вычисления адреса операнда, байт SIB включается в команду для определения базового регистра, индексного регистра и масштабного коэффициента, равного 1, 2,4 или 8.
Непосредственный операнд. Непосредственные операнды могут быть 8-, 16- или 32-битными. В тех случаях, когда 8-битный непосредственный операнд используется в команде вместе с 16- или 32-битным операндом, процессор расширяет его с учетом знака. Таким же образом 16-битный операнд преобразуется в 32-битный.
Смещение. Когда спецификатор режима адресации указывает, что для операнда будет использоваться смещение, оно включается в команду. Смещение представляет собой 8-, 16- или 32-битовое целое число со знаком. Восьмибитовая форма используется в тех случаях, когда значение смещения достаточно мало. Процессор расширяет 8-битовое смещение до 16 или 32 бит путем знакового расширения
