На этом шаге мы приведем примеры использования встроенного ассемблера.
Теперь поговорим о встроенном ассемблере. Это весьма мощное средство. Надо только иметь в виду, что встроенные ассемблеры часто несколько отстают от обычных ассемблеров в поддержке новых команд микропроцессоров. Это вполне объяснимо, так как разработка новой версии пакета, скажем C++ Builder, требует гораздо больше времени, чем пакета TASM. В примерах 1 и 2 мы используем команды арифметического сопроцессора.
program Project2; uses SysUtils; var d:double; //Функция вычисления синуса. function soproc (f:double):double; var res:double; begin //Ассемблерная вставка. asm FLD f FSIN FSTP res end; //Конец ассемблерной вставки. soproc:=res; end; begin d:=-pi; writeln(' X sin(X)'); while (d<=pi) do begin writeln(d:10:2,' ****',soproc(d):10:2); d:=d+0.1; end; readln; end.
Результат работы приложения изображен на рисунке 1:

Рис.1. Результат работы приложения
#include <iostream.h>
void main()
{
double w=-3.14;
//Прототип функции.
double soproc(double);
while(w<=3.14)
{
cout << w << " ";
cout << soproc(w) << endl;
w+=0.1;
}
}
//Функция вычисления синуса.
double soproc(double f)
{
double d;
//Ассемблерная вставка.
asm
{
FLD f
FSIN
FSTP d
}
return d;
}
Результат работы приложения изображен на рисунке 2:

Рис.2. Результат работы приложения
На следующем шаге мы рассмотрим пример использования DLL.