Как вызвать winapi функцию на ассемблере в Delphi

Рейтинг: 1Ответов: 2Опубликовано: 14.09.2014

Как из ассемблерной вставки на Delphi, вызвать winapi функцию, например MessageBox?

Как

MessageBox(0, 'Hello!', 0, 0);

вызвать из ассемблерной вствки на Delphi?

Ответы

▲ 2

Можно сделать тот же самый код в делфи, скомпилировать, запустить и посмотреть, что получилось в окне CPU.

▲ 2

Пример на FreePascal, для делфи не должно особо отличаться.

function AsmMessageBox(hWnd: THandle; lpText: PChar; lpCaption: PChar; uType: Cardinal): Integer;
begin
  {$ASMMODE Intel} // для включения синтаксиса Intel (в FreePascal), в делфи вроде и так по умлочанию
  asm
    mov r9d,uType
    mov r8,lpCaption
    mov rdx,lpText
    mov rcx,hWnd
    call MessageBox
    mov result,eax
  end;
end;