- •Содержание
- •1.Введение в архитектуру эвм. 5
- •2.Архитектура реального режима работы м/п семейства 8086 19
- •3.Директивы и операторы ассемблера 81
- •4.Архитектура и система команд арифметического сопроцессора 91
- •5.Варианты контрольных работ 131
- •6.Примеры программ 138
- •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.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.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.Варианты контрольных работ
- •5.1.Контрольная работа №1
- •5.2. Контрольная работа №2
- •6.Примеры программ
- •Список рекомендуемой литературы
2.Архитектура реального режима работы м/п семейства 8086
2.1.Форматы данных микропроцессора
2.1.1.Числа
Микропроцессор работает с двоичными числами со знаком и без знака, длиной 8 бит (1 байт), 16 бит (2 байта) или 32 бита (4 байта), с двоично-десятичными числами длиной 8 бит (BCD - числа) и с десятичными числами длиной 8 бит.
Байт - это число без знака в диапазоне от 0 до 255 или число со знаком в диапазоне от - 128 до +127.
Слово - это число без знака в диапазоне от 0 до 65535 или число со знаком, то от - 32768 до +32767.
Для 32-разрядных процессоров определены операции над двойными словами. Двойное слово - это число без знака в диапазоне от 0 до 4294967295, или число со знаком в диапазоне от -2147483648 до +2147483647.
Для чисел со знаком старший бит является знаковым: для положительных чисел он равен нулю, а для отрицательных чисел - единице.
Отрицательные числа представлены в дополнительном коде, который получается путем инвертирования всех разрядов положительного числа и суммирования полученного кода с единицей в младшем разряде.
Микропроцессор может выполнять арифметические операции над двоично-десятичными числами, хранящимися в упакованном (2 цифры в байте) формате, и над десятичными числами в неупакованном (1 цифра в байте) формате. Упакованный формат предполагает, что байт содержит две десятичные цифры, занимающие старший и младший полубайты. Диапазон представимых чисел составляет от 0 до 99. В неупакованном формате байт содержит одну десятичную цифру, которая обычно кодируется в символьном коде ASCII. Цифра 0 код ируется как 30Н, а цифра 9 - как 39Н.
2.1.2.Символы
Символьные данные хранятся в стандартном символьном коде ASCII, каждый символ занимает 1 байт. Микропроцессор ничего не знает об ASCII-коде и рассматривает символьные данные как цепочки произвольных байтов, то есть последовательность кодов символов.
2.1.3.Указатели
Указатели применяются для обращения к некоторым объектам в памяти, например адресам процедур или адресам меток. Близкий (NEAR) внутрисегментный указатель - это 16-битное или 32-битное смещение (в зависимости от разрядности микропроцессора) от базового адреса того сегмента, в котором находится указатель.
Далекий (FAR) межсегментный указатель применяется в тех случаях, когда программа осуществляет передачу управления в другой сегмент. Такой указатель определяет адрес сегмента и смещение внутри сегмента.
2.1.4.Цепочки
Микропроцессоры семейства 8086 могут оперировать цепочками(строками) байт, слов и двойных слов (32-разрядные процессоры). Под цепочкой понимается последовательность взаимосвязанных элементов, хранящихся по соседним адресам. Длина цепочки не может превышать длину сегмента. Система команд процессора имеет набор цепочечных примитивов, позволяющих эффективно работать с цепочками.
2.2.Адресация памяти
Микропроцессор делит адресное пространство на произвольное количество сегментов, каждый из которых содержит не более 64 Кб. Адрес первого байта сегмента всегда кратен 16 байтам и называется адресом сегмента (параграфом сегмента, номером сегмента). Для обращения к памяти внутри сегмента используется дополнительный адрес, называемый смещением, который указывает расположение байта относительно начала сегмента (относительный адрес или относительное смещение или исполнительный адрес). Адрес сегмента и смещение составляют логический адрес.
Физический адрес образуется с помощью объединения 16 разрядного адреса сегмента и 16 разрядного смещения. Если адрес сегмента сдвинуть влево на 4 бита и дополнить справа 4 нуля, то получится 20-разрядный базовый адрес сегмента. Если сложить базовый адрес сегмента с 16 разрядным смещением, то получится 20 разрядный физический адрес. Следовательно, адресуемая память составляет 220 байт = 1024 К = 1 М. Адрес сегмента - пятизначное шестнадцатеричное число, последняя цифра = нулю, так как адрес получается в результате умножения на 16. Смещение - четырехзначное шестнадцатеричное число. В памяти слово хранится в двух соседних байтах. Младший байт - младший адрес. Старший байт - старший адрес.