- •Магомедов и. А. Микропроцессорные системы. Аппаратные и программные средства.
- •Глава 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
Команда преобразования байта в слово, а слова - в двойное слово.
CBW
CWD
По команде CBW число из al переписывается в ax (дополнение выполняется знаковыми разрядами). Аналогично по команде CWD число из ax переписывается в два регистра dx и ax.
Команды передачи управления
JMP <адрес перехода>; имеет три модификации в зависимости от длины ее адресной части:
short - при переходе по адресу, который находится на расстоянии -128...127 байт относительно адреса данной команды (длина адресной части 1 байт);
near ptr - при переходе по адресу, который находится на расстоянии З2 Кбайта (-32768...32767 байт) относительно адреса данной команды (длина адресной части 2 байта);
far ptr - при переходе по адресу, который находится на расстоянии превышающем 32 Кбайта (длина адресной части 4 байта).
При указании перехода к командам, предшествующим команде перехода, ассемблер сам определяет расстояние до метки перехода и строит адрес нужной длины. При указании перехода к последующим частям программы необходимо ставить указатели short, near ptr и far ptr.
В качестве адреса команды перехода используются метки трех видов:
а) <имя>: nор (nор - команда «нет операции»);
б) <имя> label near (для внутрисегментных переходов);
в) <имя> label far (для внесегментных переходов).
Примеры:
а) jmp short b - переход по адресу b;
б) jmp [bx] - переход по адресу в регистре bx (адрес определяется косвенно);
в) a: пор - описание метки перехода «a»;
г) b label near - описание метки перехода «b».
Команды условного перехода
<мнемоническая команда> <адрес перехода>
Набор инструкций процессора 8086 предусматривает большое разнообразие инструкций условных переходов, что позволяет вам осуществлять переход почти по любому флагу или их комбинации. Можно осуществлять условный переход по состоянию нуля, переноса, по знаку, четности или флагу переполнения и по комбинации флагов, показывающих результаты операций чисел со знаками.
Перечень инструкций условных переходов приводится в таблице 3.2.
Таблица 3.2 Инструкции условных переходов
Название |
Значение |
Проверяемые флаги |
JB/JNAE |
Перейти, если меньше / перейти, если не больше или равно |
CF = 1 |
JAE/JNB |
Перейти, если больше или равно / перейти, если не меньше |
CF = 0 |
JBE/JNA |
Перейти, если меньше или равно / перейти, если не больше |
CF=1 или ZF=1 |
JA/JNBE |
Перейти, если больше / перейти, если не меньше или равно |
CF = 0 и ZF = 0 |
JE/JZ |
Перейти, если равно |
ZF = 1 |
JNE/JNZ |
Перейти, если не равно |
ZF = 0 |
JL/JNGE |
Перейти, если меньше чем / перейти если не больше чем или равно |
SF = OF |
JGE/JNL |
Перейти, если больше чем или равно / перейти, если не меньше чем |
SF = OF |
JLE/JNLE |
Перейти, если меньше чем или равно / перейти, если не больше, чем |
ZF = 1 или SF =OF |
JG/JNLE |
Перейти, если больше чем / перейти, если не меньше чем или равно |
ZF = 0 или SF = OF |
JP/JPE |
Перейти по четности |
PF = 1 |
JNP/JPO |
Перейти по нечетности |
PF = 0 |
JS |
Перейти по знаку |
SF = 1 |
JNS |
Перейти, если знак не установлен |
SF = 0 |
JC |
Перейти при наличии переноса |
CF = 1 |
JNC |
Перейти при отсутствии переноса |
CF = 0 |
JO |
Перейти по переполнению |
OF = 1 |
JNO |
Перейти при отсутствии переполнения |
OF = 0 |
CF - флаг переноса, SF - флаг знака, OF - флаг переполнения, ZF - флаг нуля, PF - флаг четности |
||
Все команды имеют однобайтовое поле адреса, следовательно, смешение не должно превышать -128...127 байт. Если смещение выходит за указанные пределы, то используется специальный прием:
Вместо программируется
jz zero jnz continue
jmp zero
continue:
