文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 337
阅读 7
收藏 0
前面知道了一个汇编的赋值指令(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、甚至可以用注释分句

本文转载自:http://www.cnblogs.com/del/archive/2008/01/23/1050457.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
使用C/Delphi编写ShellCode

来源:http://www.bootkitz.com/?p=93 文章谈的很好 这里说的ShellCode指的是一段x86机器码,无需重定位,在内存任何位置都可以执行的代码. 使用C/Delphi编写代码也是由其编译器特性决定的。...

BlAckEagle
2013/01/21
0
5
Delphi中使用汇编(关于POS函数的问题)

在delphi中使用汇编异常的简单,只用使用关键字asm ....end来引导就行了。 得到一个字符在字符串中的位置有很多方法,最简单的就是使用delphi自己的Pos函数 另外一个方法就是使用 循环查找字...

技术小美
2017/11/06
0
0
Plugs介绍(翻译)---- C#开源操作系统学习系列六

原文地址:http://www.codeproject.com/KB/cs/CosmosPlugs.aspx 介绍 这篇文章将展示在COSMOS中如何实现基于WINDOWS API调用和内部调用的.net代码。另外,也包含了如何使用COSMOS,汇编或者X...

李恒哲
2011/08/13
0
0
Delphi开源组件库--QDAC

QDAC 是由 QDAC 开发组为大家提供的一套 Delphi/C++ Builder 跨平台开源组件库,名称取自英文 Quick Data Access Components 的首字母。它支持 Delphi/C++ Builder 2007 以上的版本的开发环境...

swish
2015/11/23
1K
0
ARM嵌入式开发中的GCC内联汇编简介

ARM嵌入式开发中的GCC内联汇编简介 嵌入式开发交流群280352802,欢迎加入! 在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了...

长平狐
2013/06/03
70
1

没有更多内容

加载失败,请刷新页面

加载更多

Java 主要特性

Java 有下面的一些主要特性。 面向对象 在 Java 中,所有的都是对象。正式因为 Java 基于对象模型,所以 Java 更加容易进行扩展。 Java语言提供类、接口和继承等面向对象的特性,为了简单起见...

honeymose
46分钟前
1
0
【NLP】【五】gensim之Word2Vec

【一】整体流程综述 gensim底层封装了Google的Word2Vec的c接口,借此实现了word2vec。使用gensim接口非常方便,整体流程如下: 1. 数据预处理(分词后的数据) 2. 数据读取 3.模型定义与训练...

muqiusangyang
46分钟前
1
0
Python爬虫之网络请求

urllib库中常用函数的使用 安装 urllib库是安装python时自带的一个库,不需要再另外安装; 使用 #!/usr/bin/python3# -*- coding:utf-8 -*-# @Time : 2018-11-10 21:25# @Author : M...

村雨1943
今天
4
0
Linux学习-1030(定时任务、任务管理、)

10.23 linux任务计划cron 10.24 chkconfig工具 10.25 systemd管理服务 10.26 unit介绍 10.27 target介绍 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/478722 2. xin......

wxy丶
今天
3
0
git push origin与git push -u origin master的区别

$ git push origin 上面命令表示,将当前分支推送到origin主机的对应分支。 如果当前分支只有一个追踪分支,那么主机名都可以省略。 $ git push 如果当前分支与多个主机存在追踪关系,那么这...

clin003
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部