- •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.Примеры программ
- •Список рекомендуемой литературы
3.2.3. Директивы задания набора допустимых команд
По умолчанию ассемблеры используют набор команд процессора 8086 и выдают сообщения об ошибках, если выбирается команда, которую этот процессор не поддерживал. Для того чтобы ассемблер разрешил использование команд, появившихся в более новых процессорах, и команд расширений, предлагаются следующие директивы:
.8086- используется по умолчанию. Разрешены только команды 8086;
.186- разрешены команды 80186;
.286 и .286с- разрешены непривилегированные команды 80286;
.286р- разрешены все команды 80286;
.386 и .386с- разрешены непривилегированные команды 80386;
.386р- разрешены все команды 80386;
.486 и .486с- разрешены непривилегированные команды 80486;
.486р- разрешены все команды 80486;
.586 и .586с- разрешены непривилегированные команды P5 (Pentium);
.586р- разрешены все команды P5 (Pentium);
.686 - разрешены непривилегированные команды P6 (Pentium Pro, Pentium II);
.686р- разрешены все команды P6 (Pentium Pro, Pentium II);
.8087 – разрешены команды арифметического сопроцессора 8087;
.287 – разрешены команды арифметического сопроцессора 80287;
.387 – разрешены команды арифметического сопроцессора 80387;
.487 – разрешены команды FPU 80486;
.587 – разрешены команды FPU 80586;
.MMX – разрешены команды IA MM;
.K3D – разрешены команды AMD 3D;
Если присутствует директива .386 и выше, ассемблер TASM определяет все сегменты как 32-битные при условии, что директива указана перед директивой .model.
3.3.Примеры использования директив в программах типа .Exe и .Com.
; Файл с текстом программы hello-1.asm
; Выводит на экран сообщение ‘HelloWorld!’ и завершается.
; Генерируется исполняемый модуль типа .EXEпри помощи вызова ассемблера TASM и редактораTLINK:
; tasm hello-1.asm
; tlink hello-1.obj
.model small ; Модель памяти, используемая для EXE
.stack 100h ; Сегмент стека размером в 256 байт.
.data
message db 'Hello World!',0Dh,0Ah,'$'
.code
start: mov ax, @data; Настройка сегментного регистра
mov ds,ax ; dsна начало сегмента данных.
mov dx,offset message
mov ah,9
int 21h ; Вызов функцииDOSдля вывода строки.
mov ax,4C00h
int 21h ; Вызов функции DOSдля завершения программы.
end start
; Файл с текстом программы hello-2.asm
; Выводит на экран сообщение ‘HelloWorld!’ и завершается.
; Генерируется исполняемый модуль типа .COMпри помощи вызова ассемблера TASM и редактораTLINK:
; tasm hello-2.asm
; tlink /t hello-2.obj
.model tiny ; Модель памяти, используемая для .COM
.code ; Начало сегмента кодов
org 100h ; Начальное значение программного счетчика
; внутренней переменной ассемблера, равная
;смещению относительно начала сегмеента - 100h
jmpstart; Переход на начало программы
message db 'Hello World!',0Dh,0Ah,'$' ; Строка для вывода
start: mov ah,9 ; Номер функции DOS - в AH
mov dx,offset message ; Смещение адреса строки - в DX
int 21h ; Вызов системной функции DOS
ret ; Завершение COM- программы
end start ; Конец текста программы.
4.Архитектура и система команд арифметического сопроцессора
Арифметический сопроцессор предназначен для вычислений над числами с плавающей точкой и может работать только в паре с основным процессором. Применение сопроцессора в задачах, использующих сложные вычисления (машинная графика, статические и инженерные расчеты) позволяет повысить быстродействие системы.
Первый из семейства – это восьмиразрядный сопроцессор 8087, затем появились шестнадцатиразрядные модели 80287 и 80387. Сопроцессор 80387 - имеет расширенный набор команд по сравнению с моделью 80287 и большее быстродействие. В микропроцессорах 80486 – DX, а затем и во всех последующих моделях существует встроенное устройство для выполнения операций с числами с плавающей точкой (FPU), являющееся одним из модулей основного процессора. Это позволило еще больше увеличить производительность персонального компьютера.