初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子

前面知道了一个汇编的赋值指令(MOV), 再了解一个加法指令(ADD), 就可以做个例子了.

譬如: ADD AX,BX; 这相当于 Delphi 中的 AX := AX + BX;

另外提前来个列表 - Delphi 可以用汇编管理以下寄存器:
32 位寄存器: EAX EBX ECX EDX ESP EBP ESI EDI
16 位寄存器: AX BX CX DX SP BP SI DI
8 位寄存器 : AL BL CL DL AH BH CH DH
16 位段寄存器: CS DS SS ES 以及协处理器寄存器堆栈: ST


unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;



type

  TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



//使用汇编的函数

function add(x,y: Integer): Integer;

var

  count: Integer;

begin

  asm

    MOV EAX,x      {把 x 值放入寄存器 EAX}

    MOV ECX,y      {把 y 值放入寄存器 ECX}

    ADD EAX,ECX    {把 EAX + ECX 的值放入 EAX}

    MOV count,EAX  {把 EAX 的值给变量 count}

  end;

  Result := count; {返回值}



{asm 中每个语句换行即可分句, 无须 ; 在这里加上也没有问题}

end;





//测试

procedure TForm1.Button1Click(Sender: TObject);

var

  i: Integer;

begin

  i := add(2,4);

  ShowMessage(IntToStr(i)); {6}

end;



end.


 
   
补充嵌入汇编的注释及分句:
1、注释同 Delphi
2、可以用分号 ; 分句
3、可以用换行分句
4、甚至可以用注释分句

你可能感兴趣的:(Delphi)