- •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.Примеры программ
- •Список рекомендуемой литературы
4.5.4.Команды сравнений
МНЕМОНИКА |
ОПИСАНИЕ |
FCOM операнд/(без операндов) |
Сравнение |
FICOM операнд |
Целочисленное сравнение |
FCOMP операнд/(без операндов) |
Сравнение с извлечением из списка |
FICOMP операнд |
Целочисленное сравнение с извлечением |
FCOMPP (без операндов) |
Сравнение и двойное извлечение |
FTST (без операндов) |
Сравнение с нулем |
FXAM (без операндов) |
Анализ |
FUCOM (без операндов) |
Сравнение мантисс операндов |
FUCOMP (без операндов) |
Сравнение мантисс операндов с извлечением |
FUCOMPP (без операндов) |
Сравнение мантисс операндов с двойным извлечением |
Во всех операциях сравнения всегда существует ST(0), поэтому требуется один операнд, если нет операндов, то второй операнд берется изST(1).
FCOMXсравнивает содержимоеST(0) с операндомXи устанавливает следующие коды условия :
Условие сравнения |
С3 |
С2 |
С0 |
ST(0) > X |
0 |
0 |
0 |
ST(0) < X |
0 |
0 |
1 |
ST(0) = X |
1 |
0 |
0 |
ST(0) и X “не сравнимы” |
1 |
1 |
1 |
Х- численный регистр, или число в памяти одинарной или двойной точности. Указатель вершины стека - не изменяется.
FCOM- без операндов - этоFCOMST(1).
FCOMP- этоFCOMPST(1) и извлекается из стека содержимое регистраST(0), то есть указатель вершины стека уменьшается на единицу.
FCOMPP– этоFCOMPPST(1) и извлекается из стека содержимое регистровST(0) иST(1), то есть указатель вершины стека уменьшается на два.
FICOM- аналогичнаFCOM, но операндом является целое число (16 или 32 бита) в памяти.
FCOMP- аналогичнаFCOM, но после операции сравнения производится одно извлечение из стека, то есть указатель вершины стека уменьшается на единицу.
FICOMP- аналогичнаFCOMPдля целых чисел
FCOMPP(без операндов) действует какFCOM(без операндов), но после сравнения она извлекает из стека оба операнда, то есть указатель вершины стека уменьшается на два.
FTST– сравнивает нулем и устанавливает следующие коды условия:
Условие сравнения |
С3 |
С2 |
С0 |
ST(0) > 0 |
0 |
0 |
0 |
ST(0) < 0 |
0 |
0 |
1 |
ST(0) = 0 |
1 |
0 |
0 |
ST(0) и 0 “не сравнимы” |
1 |
1 |
1 |
FXAM - аналогична FTST, но установка кодов условий другая:
-
С1= 0
С1= 1
ST(0) >0
ST(0) <0
-
С0= 0
С0= 1
ST(0) конечное
ST(0) не конечное
С3 |
С2 |
|
|
С3 |
С2 |
|
0 |
0 |
ненормализованное |
|
0 |
0 |
нечисло |
0 |
1 |
нормализованное |
|
0 |
1 |
бесконечность |
1 |
0 |
0 |
|
1 |
0 |
пустой регистр |
1 |
1 |
денормализованное |
|
1 |
1 |
пустой регистр |
FXAMвыполняется примерно в два раза быстрее чемFTST.
Команды сравнения FPU 80486.
FUCOM,FUCOMP,FUCOMPP- сравнивают мантиссы. Допускается сравнение нечисел.
Бит С2= 1, если один или оба операнда - нечисла, а биты С0и С3устанавливает соотношение между мантиссами.
- безоперандные- сравниваютST(0) иST(1).
Коды условий после команд сравнения мантисс:
С3 |
С2 |
С0 |
|
0 |
1 |
0 |
ST(0) > 0 |
0 |
1 |
1 |
ST(0) < 0 |
1 |
1 |
0 |
ST(0) = 0 |
1 |
1 |
1 |
? |
Как используются коды условий сопроцессора для условных переходов основного процессора?
Ассемблерная команда сопроцессора FSTSWAXкопирует содержимое регистра состояния сопроцессора в регистрAXосновного процессора.
Затем коды условий проверяются в среде основного процессора.
Команда SAHF(запомнитьAHво флагах) позволяет получить следующий результат:
SF |
ZF |
|
AF |
|
PF |
|
CF |
SAHF |
15 |
|
|
|
|
|
|
8 |
|
B |
C3 |
|
ST |
|
C2 |
C1 |
C0 |
FSTW AX |
РезультатFCOMпо установке флажков такой же, как и у командыCMPосновного процессора за исключением условия “не сравнимы”.
FCOM FSTSW AX FWAIT, если нет FPU SAHF JE MET |
Переход к MET, если ST(0) =ST(1) Команды JE,JNE,JA,JAE,JB,JBE, JP, JNP, JC, JNC, JZ, JNZ – можно использовать для условных переходов |