首页 > 编程语言 >初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子

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

时间:2024-08-23 13:04:43浏览次数:9  
标签:汇编 Delphi EAX 初学 分句 寄存器 ECX

前面知道了一个汇编的赋值指令(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,EAX,初学,分句,寄存器,ECX
From: https://www.cnblogs.com/jijm123/p/18375779

相关文章

  • C++初学(14)
    14.1、while循环和for循环相比,while循环没有初始化和更新部分,它只有测试条件和循环体。while(text-condition)body首先程序计算圆括号内的测试条件(text-condition)表达式。如果该表达式为ture,则执行循环体中的语句。和for循环一样,循环体也由一条语句或两个花括号定义的......
  • 再谈《Visual Studio中编写x64汇编的具体方法》
    很久以前,写了一篇《VS2010中编写x64汇编的具体方法》当时也没有太深入研究,只是粗粗的实现了功能而已。后来看了微软官方文档,才发现有更简单更合理的设置方法。微软原文如下:MASMforx64(ml64.exe)|MicrosoftLearn将汇编程序语言文件添加到VisualStudioC++项目Visu......
  • delphi webbrowser屏蔽右键菜单 防止右键 防止ctrl N
    本文介绍了如何在Delphi中通过事件处理和消息过滤,阻止WebBrowser控件中的右键菜单以及防止用户使用Ctrl+N快捷键。通过`ProcessMsg`和`ApplicationEvents1Message`等方法实现对浏览器行为的控制。{关键字=webbrowser屏蔽右键菜单防止右键防止ctrlN采集软件=MKM-我的知识管理......
  • COAWST V3.8初学记录002(第二部分001:手册算例运行篇--单独运行ROMS和单独运行SWAN)
    COAWSTV3.8初学记录我是一个完完全全的海洋数值模式初学者,此前没有接触过任何海洋数值模式,在学习COAWST模式的过程中非常难受(起码从安装到算例的运行,是完完全全一个人独立学习完成,此前有求助过一些师兄和老师,但是他们也是爱莫能助,主要是距离太远,我这边的情况他们也不甚了......
  • COAWST V3.8初学记录001(第一部分:安装篇)
    COAWSTV3.8初学记录我是一个完完全全的海洋数值模式初学者,此前没有接触过任何海洋数值模式,在学习COAWST模式的过程中非常难受(起码从安装到算例的运行,是完完全全一个人独立学习完成,此前有求助过一些师兄和老师,但是他们也是爱莫能助,主要是距离太远,我这边的情况他们也不甚了......
  • 【第五节】Win32汇编程序设计
    目录一、汇编的第一个“helloworld”二、汇编中的标号三、@@的使用四、数据定义五、全局变量六、局部变量七、结构体八、结构体的访问九、获取变量地址十、函数十一、分支与循环十二、内联汇编十三、裸函数的使用一、汇编的第一个“helloworld”.386;指定本......
  • GROMACS 初学者入门理解-讲故事
    想要了解GROMACS的可以看过来,自己摸索了一个月才搞明白一点点,网上很多信息根本看不下去,都是专有名词,直接劝退,老是讲不到重点,看完下面这个故事你应该能听懂了,具体gromacs怎么用还是要学,这里能让你快速认识gromacsGROMACS运行起来需要那些文件:体系结构文件gro(),top文件,itp文件,mdp......
  • 汇编语言的神秘面纱:指令前缀的深度解析
    标题:汇编语言的神秘面纱:指令前缀的深度解析在计算机编程的底层世界中,汇编语言以其接近硬件的特性,扮演着至关重要的角色。指令前缀是汇编语言中一个关键的概念,它为指令提供了额外的信息,使得程序能够执行更加复杂和灵活的操作。本文将深入探讨指令前缀的作用、类型以及如何在......
  • 汇编世界的桥梁:链接器与加载器的奥秘
    标题:汇编世界的桥梁:链接器与加载器的奥秘在计算机程序的生命周期中,链接器(Linker)和加载器(Loader)扮演着至关重要的角色。它们是汇编语言程序从源代码到可执行程序过程中的关键环节。本文将深入探讨链接器和加载器的作用、工作原理以及它们在程序运行中的重要性。一、链接器(L......
  • 汇编语言的构建大师:宏(Macro)的深度解析
    标题:汇编语言的构建大师:宏(Macro)的深度解析在汇编语言的世界里,宏(Macro)是一种强大的工具,它允许开发者定义一段可重用的代码片段,这些片段可以在程序中多次调用,从而提高编程效率和代码的可读性。本文将深入探讨宏的概念、作用以及如何在汇编语言中使用宏,并通过代码示例展示其应......