Difference between revisions of "Lazarus Inline Assembler"
From Lazarus wiki
Jump to navigationJump to search (code highlight) |
|||
Line 2: | Line 2: | ||
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: | ||
− | < | + | <delphi> |
unit unt_asm; | unit unt_asm; | ||
{$mode objfpc}{$H+} | {$mode objfpc}{$H+} | ||
Line 45: | Line 45: | ||
initialization | initialization | ||
{$I unt_asm.lrs} | {$I unt_asm.lrs} | ||
− | end. | + | end.</delphi> |
− | </ | ||
==See also== | ==See also== |
Revision as of 11:41, 8 January 2011
│
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>