Difference between revisions of "Lazarus inline assembler"
From Free Pascal wiki
Jump to navigationJump to searchLine 1: | Line 1: | ||
This is a stub to encourage others to contribute further. Here is a very simple example to get started: | This is a stub to encourage others to contribute further. Here is a very simple example to get started: | ||
− | < | + | <syntaxhighlight> |
unit unt_asm; | unit unt_asm; | ||
{$mode objfpc}{$H+} | {$mode objfpc}{$H+} | ||
Line 44: | Line 44: | ||
{$I unt_asm.lrs} | {$I unt_asm.lrs} | ||
end. | end. | ||
− | </ | + | </syntaxhighlight> |
Revision as of 13:45, 15 April 2012
This is a stub to encourage others to contribute further. Here is a very simple example to get started:
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.