53魔力发布网,提供最好最新的开机信息

查看完整版本: 初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子

妖哥 2008-4-8 20:39

初学 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
[b][color=#000080]unit[/color][/b] Unit1;

[b][color=#000080]interface[/color][/b]

[b][color=#000080]uses[/color][/b]
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

[b][color=#000080]type[/color][/b]
  TForm1 = [b][color=#000080]class[/color][/b](TForm)
    Button1: TButton;
    [b][color=#000080]procedure[/color][/b] Button1Click(Sender: TObject);
  [b][color=#000080]end[/color][/b];

[b][color=#000080]var[/color][/b]
  Form1: TForm1;

[b][color=#000080]implementation[/color][/b]

[color=#008284]{$R *.dfm}[/color]

[color=#008000]//使用汇编的函数
[/color][b][color=#000080]function[/color][/b] add(x,y: Integer): Integer;
[b][color=#000080]var[/color][/b]
  count: Integer;
[b][color=#000080]begin[/color][/b]
  [b][color=#000080]asm[/color][/b]
    MOV EAX,x      [color=#008000]{把 x 值放入寄存器 EAX}[/color]
    MOV ECX,y      [color=#008000]{把 y 值放入寄存器 ECX}[/color]
    ADD EAX,ECX    [color=#008000]{把 EAX + ECX 的值放入 EAX}[/color]
    MOV count,EAX  [color=#008000]{把 EAX 的值给变量 count}[/color]
  [b][color=#000080]end[/color][/b];
  Result := count; [color=#008000]{返回值}[/color]

[color=#008000]{asm 中每个语句换行即可分句, 无须 ; 在这里加上也没有问题}[/color]
[b][color=#000080]end[/color][/b];


[color=#008000]//测试
[/color][b][color=#000080]procedure[/color][/b] TForm1[color=#0000ff].[/color]Button1Click(Sender: TObject);
[b][color=#000080]var[/color][/b]
  i: Integer;
[b][color=#000080]begin[/color][/b]
  i := add([color=#0000ff]2[/color],[color=#0000ff]4[/color]);
  ShowMessage(IntToStr(i)); [color=#008000]{6}[/color]
[b][color=#000080]end[/color][/b];

补充嵌入汇编的注释及分句:
1、注释同 Delphi
2、可以用分号 ; 分句
3、可以用换行分句
4、甚至可以用注释分句
页: [1]
查看完整版本: 初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子
妖城魔力欢迎您