Difference between revisions of "Lazarus Inline Assembler"
From Lazarus wiki
Jump to navigationJump to searchPaulatreides (talk | contribs) |
|||
Line 1: | Line 1: | ||
+ | {{Lazarus Inline Assembler}} | ||
+ | |||
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: | ||
<pre> | <pre> |
Revision as of 11:34, 16 July 2009
│
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:
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.