- •Магомедов и. А. Микропроцессорные системы. Аппаратные и программные средства.
- •Глава 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
Вариант 9.
Зарезервировать в сегменте данных:
1. цепочку символов "терморегулятор", присвоить последовательности имя Q1. Обеспечить с помощью директивы LABEL доступ к этим байтам как к словам.
2. четыре слова без инициализации с именем Q2;
3. присвоить значению A841 имя Q3.
Написать программу, в которой:
1. Получить сумму 1, 3, 6 слов последовательности Q1 и записать результат в 3 слово последовательности Q2.
2. Полученный в п.1. результат сложить с 1 байтом последовательности Q1 и вычесть значение Q3, результат записать во 2 слово последовательности Q2.
3. Получить сумму 2 и 3 слов последовательности Q2, старший байт результата записать во 2 байт последовательности Q1, младший байт - в младший байт первого слова последовательности Q2.
4. Выполнить п.1., используя косвенную адресацию (см. примечание).
Вариант 10.
Зарезервировать в сегменте данных:
1. 3 байта со значением 133 и 5 байт со значением 88h. Присвоить последовательности имя T1. Обеспечить с помощью директивы LABEL доступ к этим байтам как к словам.
2. четыре слова, значение первого слова равно CF1h, остальные слова не инициализировать, имя последовательности - T2;
3. присвоить значению 2A5 имя T3.
Написать программу, в которой:
1. Записать во 2 слово последовательности T2 первое слово последовательности T1;
2. Получить сумму 3 значений: первых двух слов последовательности T2 и шестого байта последовательности T1, результат записать в 3 слово последовательности T2.
3. Получить 2 и 3 слов последовательности T2 и из результата вычесть значение Т3, результат записать в 4 слово последовательности T1.
4. Выполнить п.2., используя косвенную адресацию (см. примечание).
Вариант 11.
Зарезервировать в сегменте данных:
1. слово CFA2, два слова без инициализации и одно слово со значением 27CFh, дать последовательности имя P1. Обеспечить с помощью директивы LABEL доступ к этим словам как к байтам .
2. цепочку символов "история", присвоить последовательности имя P2.
3. присвоить значению 28Fh имя P3.
Написать программу, в которой:
1. Получить сумму 2, 4, 7 байтов последовательности P1 и записать результат в 3 слово последовательности P2.
2. Получить сумму первого и четвертого слов последовательности P1 и из результата вычесть значение P3, полученное значение записать: старший байт результата записать в старший байт 2 слова последовательности P1, младший байт - в младший байт третьего слова этой последовательности.
3. Выполнить п.1., используя косвенную адресацию (см. примечание).
Вариант 12.
Зарезервировать в сегменте данных:
1. 5 слов со значениями 6B8D, F13F, C127, 8ADE, 51F4. Дать последовательности имя M1. Обеспечить с помощью директивы LABEL доступ к этим словам как к байтам.
2. цепочку символов "солидарность" с именем М2;
3. присвоить значению F160 имя M3.
Написать программу, в которой:
1. Получить сумму 4, 7 и 9 байтов последовательности M1. Записать результат в третье слово последовательности M2.
2. Получить сумму 1 и 4 слов последовательности M1, из которой вычесть значение M3, Старший байт полученного значения записать в шестой байт последовательности M2, а младший байт в седьмой байт последовательности М1.
3. Выполнить п.1., используя косвенную адресацию (см. примечание).
Примечание. В случае косвенной адресации адрес слова (байта) находится в одном из регистров: BX, SI, DI.
Например:
MOV AX, [BX] ;в AX заносится слово, адрес которого содержится в регистре BX.
MOV AX, 2[BX] ;равносильно MOV AX, [BX+2], в AX заносится слово, адрес которого на 2 байта больше адреса, содержащегося в регистре BX.
ADD AX, 3[BX] ;добавить к содержимому AX слово, адрес
;которого на 3 байта больше адреса, содержащегося в регистре BX.
SUB AX, 4[BX] ;вычесть из AX слово, адрес которого на 4 байта больше ;адреса, содержащегося в регистре BX
