- •Магомедов и. А. Микропроцессорные системы. Аппаратные и программные средства.
- •Глава 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.
- •П1. Команды пересылки данных
- •Система команд процессораi486
- •П2. Арифметические команды
- •П3. Логические команды
- •П4. Команды переходов
- •П5. Команды процессора i486
Команда пересылки данных
Данные в процессоре i86 перемещаются с помощью инструкции MOV. В действительности MOV (от слова переместить) - это не совсем удачное название данной инструкции. Более удачным было бы название COPY (копировать), так как инструкция MOV на самом деле записывает копию операнда-источника в операнд-приемник [38].
Например, инструкции:
mov ax,0
mov bx,9
mov ax,bx
сначала записывают в регистр AX константу 0, затем в регистр BX записывается константа 9, и, наконец, содержимое BX копируется в AX.
Заметим, что значение 9 не перемещается из BX в AX, оно просто копируется из регистра BX в регистр AX.
В инструкции MOV можно использовать почти любую пару операндов, что имеет смысл за исключением того случая, когда в качестве операнда используется сегментный регистр. В качестве операнда-источника (правого операнда) инструкции MOV можно использовать следующее: константу, выражение, при вычислении которого получается константа, общий регистр или ячейку памяти, доступную с помощью одного из режимов адресации. В качестве операнда-приемника (левого операнда) инструкции MOV может использоваться общий регистр или ячейка памяти.
Приведем примеры:
а) mov ax, сx- пересылка содержимого регистра сx в регистр ax;
б) mov cx, exword -пересылка 2 байт, расположенных в поле exword, из основной памяти в регистр cx;
в) mov si, 1000 - запись числа 1000 в регистр si;
г) mov word ptr [di+555], 4 - запись числа 4 длиной 2 байта в основную память по адресу [di+555].
Для загрузки «прямого» адреса в сегментный регистр используются две команды пересылки:
mov ax, code
mov ds, ax
Команда загрузки исполнительного адреса
LEA <операнд l>, <операнд 2> ;вычисляет исполнительный адрес второго операнда и помещает его в поле, на которое указывает первый операнд.
Приведем примеры:
а) lea bx, exword - в регистр bx загружается исполнительный адрес exword;
б) lea bx, [di+10] - в регистр bx загружается адрес l0-го байта относительно точки, на которую указывает адрес в регистре di.
Команды загрузки указателя.
LDS <регистр >,<операнд 2>
LЕS <регистр >,<операнд 2>
Команда LDS загружает в регистры DS :<регистр> указатель (< адрес сегмента> : <исполнительный адрес>), расположенный по адресу, указанному во втором операнде.
Команда LЕS загружает указатель по адресу, расположенному во втором операнде, в регистры ЕS:<регистр>.
Например:
lds si, exword ;т.e. слово (2 байта) по адресу exword загружается в si, а по адресу exword+ 2 - в ds.
Команда записи в стек
На вершину стека всегда указывает регистр SP. Для обращения к данным в стеке, с использованием режимов адресации памяти, при которых указателем базы является регистр BP, можно использовать инструкцию MOV. Например, инструкция:
mov ax,[bp+4] ;загружает регистр AX содержимым слова в сегменте стека со смещением BP+4.
Однако чаще к стеку обращаются с помощью инструкций PUSH и POP.
PUSH <операнд> ;организует запись в стек слова, адрес которого указан в операнде.
Например:
push аx - запомнить содержимое регистра аx в стеке.
POP <операнд> ;организует чтение из стека последнего слова и помещает его по адресу, указанному во втором операнде.
Например:
pop аx - восстановить содержимое регистра аx из стека.
Например, инструкции:
mov ax,1
push ax
pop bx
заносят значение (равное 1) в регистре AX в вершину стека, затем извлекают 1 из вершины стека и сохраняют ее в BX.
