- •3 Методическое пособие для лабораторных работ по курсу «Организация эвм и периферийные устройства» Оглавление
- •1.Введение в архитектуру эвм.
- •1.1.Структура персонального компьютера.
- •2.Архитектура реального режима работы м/п семейства 8086
- •2.1.Форматы данных микропроцессора
- •2.1.1.Числа
- •2.1.2.Символы
- •2.1.3.Указатели
- •2.1.4.Цепочки
- •2.2.Адресация памяти
- •2.3.Внутренние регистры процессора
- •2.3.1.Регистры общего назначения
- •2.3.2.Сегментные регистры
- •2.3.3.Регистры смещения
- •2.3.4.Регистр флагов
- •2.4.Режимы адресации
- •2.4.5.Базовая адресация
- •2.5.1.1. Общие команды.
- •2.5.1.2. Команды push и pop .
- •2.5.1.3. Команды ввода-вывода.
- •2.5.1.4. Адресные команды (пересылки адреса)
- •2.5.1.5. Флажковые команды (команды пересылки флагов).
- •2.5.2.Арифметические команды.
- •2.5.2.1. Команды сложения.
- •2.5.2.2.Команды вычитания.
- •2.5.2.3.Команды умножения и деления.
- •2.5.2.4.Команды расширения знака.
- •2.5.2.5.Десятичная арифметика.
- •2.5.3.Логические команды.
- •2.5.3.1.Булевы команды.
- •2.5.3.2.Команды сдвигов.
- •2.5.3.3.Команды циклических сдвигов.
- •2.5.3.4.Команды двойного сдвига
- •2.5.3.5.Команды работы с двоичными цепочками
- •2.5.4.Команды передачи управления.
- •2.5.4.1.Команды безусловной передачи управления.
- •2.5.4.2. Команды условных переходов.
- •2.5.4.3.Команды SetCondition
- •2.5.4.4 Команды управления циклами.
- •2.5.5.Цепочечные (строковые) команды.
- •2.5.5.1.Команды пересылки цепочки.
- •2.5.5.2.Команды сравнения цепочек.
- •2.5.5.3.Команды сканирования цепочек.
- •2.5.5.4.Команды загрузки.
- •2.5.5.5.Команды сохранения цепочек.
- •2.5.5.6.Команды ввода и вывода цепочек.
- •2.5.5.7.Замена сегмента.
- •2.5.6.Команды управления микропроцессором.
- •2.5.6.1.Команды управления флагами.
- •2.5.6.2.Команды синхронизации.
- •2.5.6.3.Команда холостого хода.
- •2.5.6.4.Команды прерываний.
- •2.5.7.Новые команды микропроцессора 80486
- •3.Директивы и операторы ассемблера
- •3.1.Структура программы
- •3.2.Организация программы.
- •3.2.1. Модели памяти
- •3.2.2. Процедуры
- •3.2.3. Директивы задания набора допустимых команд
- •3.3.Примеры использования директив в программах типа .Exe и .Com.
- •4.Архитектура и система команд арифметического сопроцессора
- •4.1.Форматы чисел сопроцессора
- •4.1.1.`Целые числа
- •4.1.2. Вещественные числа
- •4.1.3.Диапазоны вещественных чисел в х87.
- •4.2.Особые случаи вещественной арифметики
- •4.3.Формирование специальных значений в особых случаях
- •4.3.1. Случай неточного результата.
- •4.3.2.Численное антипереполнение.
- •4.3.3. Денормализованный операнд.
- •4.3.4. Деление на ноль.
- •4.3.5.Численное переполнение.
- •4.3.6.Недействительная операция.
- •4.4.Регистры математического сопроцессора.
- •4.4.1.Численные регистры (регистровый стек).
- •4.4.2.Регистр управления (cw)
- •4.4.3.Регистр состояния.
- •4.4.4. Регистр тэгов (признаков).
- •4.4.5.Указатели особого случая.
- •4.5.Система команд арифметического сопроцессора.
- •4.5.1.Команды передачи данных.
- •4.5.2.Арифметические команды
- •4.5.3.Дополнительные арифметические команды
- •4.5.4.Команды сравнений
- •4.5.5.Трансцендентные команды
- •4.5.6.Административные команды
- •4.6.Совместная работа двух процессоров в системе.
- •4.6.1.Синхронизация по командам.
- •4.6.2.Синхронизация по данным.
- •5.Примеры программ
- •Список рекомендуемой литературы
2.5.5.7.Замена сегмента.
Можно ли изменить адресацию регистра SI (ESI) с сегмента данных на дополнительный сегмент? Можно, если использовать префикс замены сегмента, например:
LEA SI, ES : H1; копирует байт из строки H1 в строку H2. Обе строки в дополнительном сегменте
LEADI,H2
MOVSB
Нельзя заменить сегмент, к которому адресуется регистр DI (EDI). Для того чтобы работать со строками в сегменте данных, надо в регистр ES загрузить значение, равное содержимому регистра DS.
Например:
MOV AX, @DATA
MOVES,AX
MOV DS, AX
или:
PUSH DS
POPES
2.5.6.Команды управления микропроцессором.
2.5.6.1.Команды управления флагами.
Микропроцессор имеет команды для установки и сброса флага переноса (STC, CLC), флага направления (STD, CLD) и флага прерывания (STI, CLI). Есть также команда инвертирования флага переноса (CMC). Перечень команд управления процессором приведена в таблице 2.16.
Таблица 2.16. Перечень команд управления процессором.
Мнемоника |
Описание |
CLC сбросить флаг переноса |
0 CF |
CMC инвертировать флаг переноса |
1 - CF CF |
STC установить флаг переноса |
1 CF |
CLD сбросить флаг направления |
0 DF |
STD установить флаг направления |
1 DF |
CLI сбросить флаг разрешения прерывания |
0 IF |
STI установить флаг разрешения прерывания |
1 IF |
CLI микропроцессор игнорируют маскируемые прерывания, но обрабатывает немаскируемые прерывания.
2.5.6.2.Команды синхронизации.
Одним из средств синхронизации процессора с внешними устройствами являются прерывания, но в его архитектуре реализованы ещё две формы синхронизации: первая относится к использованию сопроцессора, вторая - к разделению ресурсов с другими процессорами в мультипроцессорной системе. Например, для реализации вещественной арифметики целесообразно использовать специальный арифметический сопроцессор. Он работает только во взаимодействии с основным процессором .
В частности, когда основной процессор встречает специальную команду ESC, он передает ее на исполнение сопроцессору. Команда ESC показывает, какую операцию должен выполнить сопроцессор (код операции), эту информацию основной процессор игнорирует, но команда ESC задаёт для сопроцессора операнд в памяти (или регистре). Эту информацию основной процессор использует так: он вычисляет адрес операнда, а затем считывает его или записывает в память по запросу процессора. ESC применяется вместе с командой ожидания WAIT, обеспечивающей синхронизацию процессоров; с её помощью основной процессор проверяет, когда сопроцессор заканчивает свою операцию.
Если в многопроцессорной системе возникает проблема разделения общей памяти, то для избежания использования не полностью откорректированной информации вторым процессором при проведении операций коррекции первым в системе команд микропроцессора существует префикс блокировки шины LOCK. Например, чтобы нельзя было прервать команду пересылки элементов строки можно написать: LOCK REP MOVS. Такая команда выдает сигнал LOCK на всё время выполнения команды MOVS, что запрещает другим процессорам доступ к памяти.
2.5.6.3.Команда холостого хода.
Команда NOP (нет операции) - не выполняет никакой операции, она только увеличивает значение указателя команд IP. Эта команда находит много применений: удобна при тестировании в качестве точки останова трассировки, используется для организации задержки и так далее.