Lazarus Inline Assembler

From Lazarus wiki
Revision as of 12:41, 8 January 2011 by Chronos (talk | contribs) (code highlight)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

English (en) español (es) français (fr) 日本語 (ja) 한국어 (ko) русский (ru) Tiếng Việt (vi)

This is a stub to encourage others to contribute further. Here is a very simple example to get started: <delphi> unit unt_asm; {$mode objfpc}{$H+} interface uses

 Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

 { TForm1 }
 TForm1 = class(TForm)
   btnGo: TButton;
   edtInput: TEdit;
   edtOutput: TEdit;
   Label1: TLabel;
   Label2: TLabel;
   procedure btnGoClick(Sender: TObject);
 private
   { private declarations }
 public
   { public declarations }
 end; 

var

 Form1: TForm1; 

implementation { TForm1 }

procedure TForm1.btnGoClick(Sender: TObject); var

 num, answer : integer;

begin

 num := StrToInt(edtInput.Text);
 //This is required with Lazarus on x86:
 {$ASMMODE intel}
 asm
   MOV EAX, num
   ADD EAX, 110B //add binary 110
   SUB EAX, 2    //subtract decimal 2
   MOV answer, EAX
 end;
 edtOutput.Text := IntToStr(answer);

end;

initialization

 {$I unt_asm.lrs}

end.</delphi>

See also