Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2009, 16:38   #1
skrudjmagdak
Пользователь
 
Регистрация: 02.12.2009
Сообщений: 33
По умолчанию assembler в delphi

Нужно написать функцию(любую) в delphi но написанную на assembler'е(т.е. асм код встроенный в delphi), которую потом нужно вызвать. Покажите пожалуйста пример
skrudjmagdak вне форума Ответить с цитированием
Старый 03.12.2009, 17:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
uses
  SysUtils,Windows;
  Procedure aga(s:string);
  begin
   asm
    push 0;
    push 0;
    push s;
    call GetForegroundwindow
    push eax;
    call MessageBoxA;
   end;
  end;
begin
 aga('sdsad');
  { TODO -oUser -cConsole Main : Insert code here }
end.
Устроит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.12.2009, 17:54   #3
skrudjmagdak
Пользователь
 
Регистрация: 02.12.2009
Сообщений: 33
По умолчанию

Дело в том что мне нужна сама функция на асме
skrudjmagdak вне форума Ответить с цитированием
Старый 03.12.2009, 17:59   #4
skrudjmagdak
Пользователь
 
Регистрация: 02.12.2009
Сообщений: 33
По умолчанию

Объявление самой функции на асме
skrudjmagdak вне форума Ответить с цитированием
Старый 03.12.2009, 18:58   #5
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Код:
function test():boolean;
asm
  mov @result, 1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if test() then
showmessage('ok');
end;
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!
DarkEvil вне форума Ответить с цитированием
Старый 03.12.2009, 19:22   #6
skrudjmagdak
Пользователь
 
Регистрация: 02.12.2009
Сообщений: 33
По умолчанию

Спасибо за ответ, но мне немного другое нужно. Вы делайте такую конструкцию:
Procedure имя_процедуры
asm
текст_асм проги
end;
end;
...
имя_процедуры //вызов процедуры

А мне нужно:

asm
Имя_процедуры
...
end;
...

имя_процедуры //вызов процедуры

т.е. имя функции\процедуры должно быть внутри асм кода
skrudjmagdak вне форума Ответить с цитированием
Старый 03.12.2009, 19:29   #7
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Код:
procedure testmessage();
begin
  MessageBox(0, 'test', 'test', 0);
end;

procedure test;
asm
  call testmessage;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
test;
end;
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!
DarkEvil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
преобразовать Delphi код в assembler rip Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 12.05.2008 15:46