Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Следующей группой, которую мы рассмотрим, являются команды сложения/ вычитания. Каждая из этих команд находит сумму или разность регистра S T ( O ) и другого операнда. Результат операции всегда помещается в регистр сопроцессора. Далее представлена мнемоника этих команд.

fadd ST(0) , ST( 1 )
fadd ST(0) , ST(2)
fadd ST(2) , ST(0)
fiadd WORD_INTEGER
fiadd SHORT_ INTEGER
fadd SHORT_ REAL
fadd LONG_REAL
faddp ST(2) , ST(0)
fsub ST( 0 ) , ST(2)
f isub WORD_INTEGER
fsubp ST(2) , ST(0)
fsubr ST(2) , ST(0)
fisubr SHORT_ INTEGER
fsubrp ST(2) , ST(0)

Операндами этих команд могут быть либо два регистра стека сопроцессора, либо регистр стека и ячейка памяти. В качестве исходных данных ячейки памяти используются слово и короткое слово разрядностью 16 и 32 бита. Фрагмент программного кода (листинг 2.18) демонстрирует операцию сложения двух целых чисел.

Листинг 2.18. Фрагмент программного кода, выполняющий сложение двух целых чисел
data
1X1 DD 43
1X2 DD -34
ISUM DD 0
code
finit
fild DWORD PTR IXl
fiadd DWORD PTR 1X2
fistp DWORD PTR ISUM
fwait

Первая команда finit инициализирует сопроцессор. Команда fiid загружает значение целочисленной переменной ixi в вершину стека. Команда fiadd выполняет операцию сложения содержимого стека и ячейки памяти 1X2, оставляя результат в вершине стека. После этого команда fistp помещает результат в ячейку памяти ISUM, одновременно удаляя это значение из вершины стека.
В листинге 2.19 представлен фрагмент кода для суммирования вещественных чисел.
Листинг 2.19. Фрагмент кода, выполняющий суммирование вещественных чисел ;
data
XI DD 43.7
Х2 DD -34.11
FSUM DD О
code
f init
fid DWORD PTR XI
fadd DWORD PTR X2
fstp DWORD PTR FSUM
fwait


 
 
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru