Difference between revisions of "Lazarus Inline Assembler"
From Lazarus wiki
Jump to navigationJump to search (New page: This is a stub to encourage others to contribute further. Here is a very simple example to get started: <pre> unit unt_asm; {$mode objfpc}{$H+} interface uses Classes, SysUtils, LResourc...) |
|||
Line 45: | Line 45: | ||
end. | end. | ||
</pre> | </pre> | ||
+ | |||
+ | --- | ||
+ | [[VirtualTreeview Example for Lazarus]] |
Revision as of 16:43, 25 November 2008
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.