Конспект лекций по предмету "Системное программирование"


Команды сравнений

МНЕМОНИКА
ОПИСАНИЕ
FCOM операнд/(без операндов)
Сравнение
FICOM операнд
Целочисленное сравнение
FCOMP операнд/(без операндов)
Сравнение с извлечением из списка
FICOMP операнд
Целочисленное сравнение с извлечением
FCOMPP (без операндов)
Сравнение и двойное извлечение
FTST (без операндов)
Сравнение с нулем
FXAM (без операндов)
Анализ
FUCOM (без операндов)
Сравнение мантисс операндов
FUCOMP (без операндов)
Сравнение мантисс операндов с извлечением
FUCOMPP (без операндов)
Сравнение мантисс операндов с двойным извлечением
Во всех операциях сравнения всегда существует ST(0), поэтому требуется один операнд, если нет операндов, то второй операнд берется из ST(1).
FCOM X сравнивает содержимое ST(0) с операндом X и устанавливает следующие коды условия :

Условие сравнения
С3
С2
С0
ST(0) > X



ST(0) < X



ST(0) = X



ST(0) и X “не сравнимы”



Х- численный регистр, или число в памяти одинарной или двойной точности. Указатель вершины стека - не изменяется.
FCOM - без операндов - это FCOM ST(1).
FCOMP - это FCOMP ST(1) и извлекается из стека содержимое регистра ST(0), то есть указатель вершины стека уменьшается на единицу.
FCOMPP – это FCOMPP ST(1) и извлекается из стека содержимое регистров ST(0) и ST(1), то есть указатель вершины стека уменьшается на два.
FICOM - аналогична FCOM, но операндом является целое число (16 или 32 бита) в памяти.
FCOMP - аналогична FCOM, но после операции сравнения производится одно извлечение из стека, то есть указатель вершины стека уменьшается на единицу.
FICOMP - аналогична FCOMP для целых чисел
FCOMPP (без операндов) действует как FCOM (без операндов), но после сравнения она извлекает из стека оба операнда, то есть указатель вершины стека уменьшается на два.
FTST – сравнивает нулем и устанавливает следующие коды условия:
Условие сравнения
С3
С2
С0
ST(0) > 0



ST(0) < 0



ST(0) = 0



ST(0) и 0 “не сравнимы”



FXAM - аналогична FTST, но установка кодов условий другая:

С1 = 0
С1 = 1
ST(0) >0
ST(0) <0


С0 = 0
С0 = 1
ST(0) конечное
ST(0) не конечное


С3
С2


С3
С2



ненормализованное



нечисло


нормализованное



бесконечность






пустой регистр


денормализованное



пустой регистр

FXAM выполняется примерно в два раза быстрее чем FTST.
Команды сравнения FPU 80486.
FUCOM, FUCOMP, FUCOMPP - сравнивают мантиссы. Допускается сравнение нечисел.
Бит С2 = 1, если один или оба операнда - нечисла, а биты С0 и С3 устанавливает соотношение между мантиссами.
- безоперандные- сравнивают ST(0) и ST(1).
Коды условий после команд сравнения мантисс:
С3
С2
С0




ST(0) > 0



ST(0) < 0



ST(0) = 0



?
Как используются коды условий сопроцессора для условных переходов основного процессора?
Ассемблерная команда сопроцессора FSTSW AX копирует содержимое регистра состояния сопроцессора в регистр AX основного процессора.
Затем коды условий проверяются в среде основного процессора.
Команда SAHF (запомнить AH во флагах) позволяет получить следующий результат:
SF
ZF

AF

PF

CF
SAHF
15








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 – можно использовать для условных переходов


Не сдавайте скачаную работу преподавателю!
Данный конспект лекций Вы можете использовать для создания шпаргалок и подготовки к экзаменам.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем конспект самостоятельно:
! Как написать конспект Как правильно подойти к написанию чтобы быстро и информативно все зафиксировать.