- •Магомедов и. А. Микропроцессорные системы. Аппаратные и программные средства.
- •Глава 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
Команда обмен данными
Выполнять обмен содержимого двух операндов позволяет инструкция XCHG. Это предоставляет удобный способ выполнять операцию, которая в противном случае потребовала бы трех инструкций.
Например, инструкция:
xchg ax,dx ;выполняет обмен содержимого AX и DX, что эквивалентно выполнению инструкций:
push ax
mov ax,dx
pop dx
Команды сложения/ Команды вычитания
ADD <операнд 1>, <операнд 2>
ADC <операнд 1>, <операнд 2> ;устанавливают флаги четности, знака результата, наличия переноса, наличия переполнения.
Пo команде ADD выполняется сложение двух операндов. Результат записывается по адресу первого операнда. По команде АDC также выполнятся сложение двух операндов, но к ним добавляется еще значение, записанное в бите переноса, установленном предыдущей командой сложения.
Приведем пример сложения двух 32-разрядных чисел:
mov ax,value1
add value2,ax
mov ax,value1+2
adc value2+2,ax
Исходные числа находится в основной памяти по адресам value1 и value2, а результат записывается по адресу value1.
SUB <уменьшаемое-результат>, <вычитаемое> ;
SBB <уменьшаемое-результат>,<вычитаемое>; устанавливают флаги четности, знака результата, наличия заема, наличия переполнения.
При выполнении операции по команде SUB заем не учитывается, а по команде SBB - учитывается. Ограничения на местоположение операндов такие же, как и у команды сложения.
Например, инструкции:
.DATA
BaseVal DW 99
Adjust DW 10
.CODE
mov dx,[BaseVal]
add dx,11
sub dx,[Adjust]
сначала загружают значение, записанное в BaseVal, в регистр DX, затем прибавляют к нему константу 11 (в результате в DX получается значение 110) и, наконец, вычитают из DX значение 10, записанное в переменной Adjust. Полученное в результате значение 100 сохраняется в регистре DX.
Команда изменения знака
NEG <операнд> ;знак операнда изменяется на противоположный.
Инструкции NEG, позволяет изменить (инвертировать) знак содержимого общего регистра или переменной в памяти.
Например, после выполнения инструкций:
mov ax,1 ; установить регистр AX в значение 1
neg ax ; отрицание AX, он становится равным -1
mov bx,ax ; скопировать содержимое AX в BX
neg bx ; отрицание BX, он становится равным 1
в регистре AX будет содержаться значение -1, а в регистре BX -значение 1.
Команда добавления /вычитания единицы
Для выполнения таких часто требующихся действий в наборе инструкций процессора предусмотрены две инструкции – INC (увеличить) и DEC (уменьшить). Инструкции INC и DEC - это наиболее эффективные инструкции, с помощью которых можно увеличивать и уменьшать значения переменных в памяти и регистров.
INC <операнд> ;значение операнда увеличивается на единицу.
DEC <операнд> ;значение операнда уменьшается на единицу.
Команда сравнения
СМP <операнд 1>, <операнд 2>; выполняется операция вычитания без записи результата и устанавливаются признаки во флажковом регистре.
