- •Магомедов и. А. Микропроцессорные системы. Аппаратные и программные средства.
- •Глава 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 Сегментация памяти, директивы ассемблера
Любые ассемблерные программы содержат, по крайней мере, один сегмент-сегмент кода. В некоторых программах используется сегмент для стековой памяти и сегмент данных для определения данных. Ассемблерная директива для описания сегмента SEGMENT имеет следующий формат:
< имя > SEGMENT
:
.
< имя > ENDS
Имя сегмента обязательно, оно должно быть уникальным. Директива ENDS означает конец сегмента.
Пример оформления сегмента данных с именем “data”:
data SEGMENT
A dB 35h, 44, 0FAh
AB dW 3145h, 4456h, 1F4Ah
A3 dB "Абрикосовое дерево"
data ENDS
Сегмент данных предназначен для определения констант, рабочих полей и областей для ввода-вывода. В соответствии с имеющимися директивами в ассемблере разрешено определение данных различной длины: например, директива DB определяет байт, а директива DW определяет слово.
Формат директивы определения данных:
[имя] DN <выражение>
Имя элемента данных не обязательно, но если в программе есть ссылка на некоторый элемент данных, то это делается посредством имени. Например:
MOV AX, AB ;содержимое слова по адресу АВ (см. пример выше) пересылается в регистр АХ.
После выполнения этого оператора в АХ будет записано число 3145h. Символическое имя АВ является адресом определенной ячейки памяти. В нашем случае этот адрес равен 3, т.к. адресация в сегменте относительна к началу сегмента. Символическое имя А транслируется системой ассемблирования в значение равное 0. Это адрес первого байта в сегменте (содержимое его равно 35h). Далее определены еще два байта со значениями 44 и 0FAh, следовательно, адрес АВ вычисляется как 0+3 байта =3.
Команда MOV AL, A+2 загружает в регистр АL значение FA, команда MOV AX, AB+2 загружает регистр АХ значение 4456h.
DN в выражении (1) может иметь следующие мнемоники:
DB (байт), DW (слово), DD (двойное слово), DQ (учетверенное слово), DT (10 байт).
Выражение может содержать константу, например:
FL DB 25; несколько констант: FL1 DB 11,12,25,84,91,... , разделённых запятыми и ограниченных длиной строки.
Ассемблер определяет эти константы в виде последовательности смежных байтов. Ссылка по имени FL1 указывает на первую константу - 11, по FL1+1, - на вторую, равную 12.
Выражение может содержать знак вопроса для неопределенного значения:
FL2 DW ?
Здесь резервируется два байта. Выражение допускает так же повторение константы в следующем формате:
[имя] Dn <число повторений> DUP(<выражение>)
Например:
DW 10 DUP(?) ;десять неопределенных слов
DB 5 DUP(14) ;пять байт содержащих 0Eh
DB 3 DUP(4 DUP(8)) ;двенадцать восьмерок.
Выражение может содержать символьную строку. Символьная строка используется для описания данных, таких, как, например, имена людей или заголовки страниц. Содержимое строки отмечается одиночными кавычками. Ассемблер переводит символьные строки в объективный код в обычном формате ASCII. Символьная строка определяется только директивой DB:
KSP DB 'ТРАВОСТОЙ'
Если в программе необходимо изменить последнюю букву в слове ТРАВОСТОЙ на "П", запишем оператор:
mov KSP+8, 'П'
