|
- 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.
复制代码 |
|