易语言置入代码

合集下载

易语言最新防破解

易语言最新防破解

易语言最新防破解以下内容来源于酷夫软件工作室作者QQ:1696043190需要合作请联系QQ。

ZProtect//Code_Confusion是代码乱序加密标记,允许您选择一部分被乱序的代码置入代码({235,8,83,84,95,83,84,65,82,84})' Code_Confusion标记开始置入代码({235,8,83,84,95,83,84,69,78,68})' Code_Confusion标记结尾//Code_Elimination是代码清除标记,允许您选择一部分代码在运行后从内存中删除;使用此标记的目的是为了防止破解者从内存中转储出完整的程序代码。

置入代码({235,8,79,67,95,83,84,65,82,84})' Code_Elimination标记开始置入代码({235,8,79,67,95,79,67,69,78,68})' Code_Elimination标记结尾//Decode_onExec是动态解码标记,允许您选择一部分只在执行时才解密的代码段;这部分代码仅在需要执行时才解码,执行前和执行后均处于加密状态置入代码({235,8,68,89,95,83,84,65,82,84})//Decode_onExec 标记开始置入代码({235,8,68,89,95,68,89,69,78,68})//Decode_onExec 标记结尾//Decode_onReg是注册解码标记,允许您选择一部分使用有效密钥才解密的代码;如果注册密钥不正确,那么这部分代码将永远处于加密状态。

通俗地讲,这部分代码仅在注册版中执行//源代码中可以使用任意数量的Decode_onReg标记,但是这些代码段在执行时会同时解密。

注册解码标记主要用于激活未注册版中被限制的功能,使之注册成为完整版。

置入代码({235,8,82,68,95,83,84,65,82,84})//Decode_onReg标记开始置入代码({235,8,82,68,95,82,68,69,78,68})//Decode_onReg标记结尾//Zprotect_VM是虚拟机加密标记,允许您选择一部分代码放到虚拟机中运行;虚拟机的指令系统是完全不同于现有的x86指令,可以有效阻止代码还原及分析置入代码({235,8,86,77,95,83,84,65,82,84})//Zprotect_VM标记开始置入代码({235,8,86,77,95,86,77,69,78,68})//Zprotect_VM标记结尾-----------适用于ZProtect V1.4.9.0版本---------VMProtect.易的SDK置入代码({235,16,86,77,80,114,111,116,101,99,116,32,98, 101,103,105,110,0})'VMP保护开始标志'关键代码置入代码({235,14,86,77,80,114,111,116,101,99,116,32,101, 110,100,0})'VMP保护结束标志Enigma加密易语言的SDK置入代码({235,10,69,67,82,79,78,69,88,69,67,66})'标记开始处'关键代码置入代码({235,10,69,67,82,79,78,69,88,69,67,69})'标记结束处NoobyProtect加密易语言的SDK置入代码({235,6,78,80,66,69,71,78})'标记开始处'关键代码置入代码({235,6,78,80,69,78,68,80})'标记结束处穿山甲调用功能型加密易语言SDK的DEMO置入代码({235,3,214,215,1})'标记开始处'关键代码置入代码({235,3,214,215,0})'标记结束处ASP加密易语言SDK置入代码({235,4,235,5,25,1,233,37,0})'标记开始处'关键代码置入代码({235,4,235,5,41,1,233,133,0,})'标记结束处Shielden2.0.1.0置入代码({235,7,83,69,66,69,71,78,0})' SE_PROTECT_START'关键代码置入代码({235,7,83,69,69,78,68,80,0})'SE_PROTECT_END 置入代码({235,7,83,69,66,69,71,78,77})' SE_PROTECT_START_MUTATION关键代码置入代码({235,7,83,69,69,78,68,80,0})'SE_PROTECT_END 置入代码({235,7,83,69,66,69,71,78,85})' SE_PROTECT_START_ULTRA关键代码置入代码({235,7,83,69,69,78,68,80,0})'SE_PROTECT_END置入代码({235,7,83,69,66,69,71,78,86})''关键代码置入代码({235,7,83,69,69,78,68,80,0})'SE_PROTECT_END 易语言SDK转换方法↓随着E5.0静态编译对标准PE格式的支持,在E程序中引入加密壳SDK提升软件保护质量已经成为现实。

嵌入窗口例程[易语言源码]

嵌入窗口例程[易语言源码]

嵌入窗口例程[易语言源码]
以下是一个简单的易语言源码示例,用于创建一个窗口并在窗口中嵌入一个控件:
plaintext.
程序运行窗口。

窗口 = 新建窗口("嵌入窗口例程", 100, 100, 400, 300)。

控件 = 新建图片框(20, 20, 200, 200, 窗口.句柄)。

控件.图片 = "C:\example.jpg"
窗口.显示()。

窗口.消息循环()。

结束。

在这个例程中,首先创建了一个窗口对象,然后在窗口中创建了一个图片框控件,并指定了控件的位置和大小。

接着将图片框控件嵌入到窗口中,并设置了图片的路径。

最后显示窗口并启动消息循环以响应用户操作。

这个例程演示了如何在易语言中创建一个窗口并在窗口中嵌入一个控件,你可以根据自己的需求进行进一步的扩展和修改。

易语言字符代码表(键盘)

易语言字符代码表(键盘)
59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 14
字符 m n o p q r s t u v w x y z { | } ~ Del
ASCII值 DEC 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
易语言字符代码表键盘易语言键盘记录源码易语言模拟键盘输入易语言键盘记录易语言键盘钩子易语言键盘代码易语言键盘记录器源码易语言字符代码易语言键盘记录模块易语言模拟键盘
字符代码表(键盘)
字符 Esc CR LF Space ! " # $ & % ' ( ) * + , . / 0
ASCII值 DEC 27 13 10 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 HEX
45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58
字符 Y Z [ \ ] _ ` a b c d e f g h i j k l
ASCII值 DEC 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 HEX
1B 0D 0A 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30
字符 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D
ASCII值 DEC 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 HEX

易语言代码大全

易语言代码大全

4.1•信息框(“”)双引号内填你想出现的文字,点击按钮即可出现信息框,上有你想出现的文字。

2•编辑框1.内容=“”在双引号内输入文字,点击按钮即可在编辑框内出现你所输入的文字。

3•判断开始(组合框1•现行选中项=0) •判断(组合框1•现行选中项 =1)门计:次储坏首ao f M煽皤粧1•加入文本倒文本⑹十楸行約 二-计炭储环屋0厂卜计次循环首3 ) 占动窗口.扳题=Lading":厂卜计灰猶环首6):■ 上动窗口,标超=动窗口.标題+::G00)’※等侍时间:300 丄-计次循环尾0Ii1 --计次储环庫0载入窗口I, , M )*Loading 效果编辑框3.内容=到文本(到数值(编辑框1.内容)+至U 数值(编辑框2•内容))编辑框3•内容=到文本(到数值 •判断(组合框1•现行选中项 =2)编辑框3•内容=到文本(到数值 •判断(组合框1•现行选中项 =3)编辑框3•内容=到文本(到数值(编辑框1•内容)—到数值 (编辑框2•内容)) (编辑框1•内容)X 到数值(编辑框2•内容)) )(7.匾用対话框1 •扌J 卄褊蜒L 内咨=(1用対话程L 文件容抚行C 编辑框1.內咨,,,)丄+信息框(咽呵・If 5 “才,6.〕 5.快速打开程序的易程序代码。

置随机教种子0店媚口标题=到文本⑻随机韧【】•別的阳盯赶交衣F19柜1曲11 =1曄辄时訓周期=到数值■曰抑如旦期=6.快速刷新网站易程序代码电11世障其酿」槪匡L 百-劉只狂煩莎込蕾⑧牡佰雜召离型 磁姗酋汪2 ___ 玖箫度小趨一 I工二丄H B1 = 1 + 14- I - Z -b 1ISD1 = 1+1询鼻〕一个简易的定义运算的代码。

在易语言代码中嵌入汇编机器码

在易语言代码中嵌入汇编机器码

在易语⾔代码中嵌⼊汇编机器码在易语⾔代码中嵌⼊汇编/机器码——“置⼊代码”的使⽤⽅法简介我们都知道,C++或Delphi的程序源代码中可以嵌⼊汇编代码,以达到某些特定⽬的。

易语⾔作为实⽤⽽⼜功能强⼤的编程语⾔,也允许在代码中嵌⼊汇编,——当然严格来说,是嵌⼊机器指令代码。

借助“特殊功能⽀持库”中的“置⼊代码”命令,可以完成这项功能。

(liigo 2009.03.20补记:⾃易语⾔4.12版本起,“置⼊代码”已被移⼊核⼼⽀持库。

)为什么要在易语⾔中“置⼊代码”呢?⼀是完成易语⾔不好直接完成的⼯作(例如,调⽤⼦程序,取变量地址,取对象⽅法地址,等等,当然,“置⼊代码”也不是唯⼀途径,通过外部⽀持库往往也能完成),⼆是提⾼代码执⾏效率(这个容易理解,不多说了)。

使⽤“置⼊代码”对程序员有什么要求?要熟悉汇编,会写汇编代码;会使⽤⾄少⼀种基于汇编的调试器(如Ollydbg);要了解或会分析易语⾔编译器⽣成的机器代码;要对易语⾔底层技术有所了解,如⽂本、字节集、数组等数据格式,参数传递⽅式,命令调⽤约定等。

“置⼊代码”在易语⾔中属于“⾼级命令”,是专门为具有⼀定编程能⼒的⾼级程序员特别是熟悉汇编编程的专业⼈⼠提供的。

⼀般初学者,如果半懂不懂,最好不要涉及,直接使⽤别⼈写好的模块或⽀持库⽐较好,毕竟易语⾔的功能已经⾜够强⼤,很多问题都已经有了现成的解决⽅案。

“置⼊代码”的原理。

其实质是,在易语⾔编译过程中,编译器将“置⼊代码”的参数所指定的机器指令数据,直接输出到EXE/DLL中。

因为这个动作是在编译时进⾏的,所以参数指定的机器码只能是常量,⽽不能是变量。

同样,因为是编译时处理,运⾏时并不执⾏,因⽽程序执⾏时并不依赖⽀持库(即程序发布时不需携带特殊⽀持库spec.fne⽂件)。

使⽤“置⼊代码”都有什么步骤?⼀、写出汇编代码;⼆、通过汇编器将汇编代码编译为机器码;三、将机器码转换为易语⾔字节集常量数据,并作为参数传⼊“置⼊代码”。

易语言代码

易语言代码

.子程序 攻击
时钟1.时钟周期 = 100
公告 (“攻击安Page Up攻击伤害加”, 十六到十 (“FF00FF00”))
.子程序 SSS
时钟1.时钟周期 = 0
公告 (“关闭攻击”, 十六到十 (“FF00FF00”))
.子程序 秒杀队友
置入代码 ({ 96, 190, 12, 221, 13, 1, 139, 54, 184, 80, 244, 250, 0, 139, 0, 185, 84, 244, 250, 0, 139, 9, 106, 0, 106, 0, 139, 22, 80, 81, 106, 0, 106, 4, 106, 4, 106, 0, 106, 4, 106, 0, 106, 0, 104, 0, 80, 0, 0, 104, 170, 32, 0, 0, 139, 206, 255, 146, 204, 2, 0, 0, 97 })
编辑框3.内容 = 到文本 (攻击伤害值)
公告 (编辑框3.内容, 十六到十 (“FF00FF00”))
.判断结束
.子程序 _时钟1_周期事件
自定义攻击 (十六到十 (“010DDD0C”), 到整数 (0), 到整数 (编辑框3.内容), 到整数 (20059))
公告 (“F4 霸体高防移动”, 十六到十 (“FF00FF00”))
公告 (“F5 消耗品召唤魔剑第1格”, 十六到十 (“FF00FF00”))
公告 (“F6 3S”, 十六到十 (“FF00FF00”))
公告 (“F7 幻影剑舞!(推荐)”, 十六到十 (“FF00FF00”))
公告 (“Page Up攻击伤害加 Page Down攻击伤害减”, 十六到十 (“FF00FF00”))

易语言编程命令调用操作大全

易语言编程命令调用操作大全

易语⾔编程命令调⽤操作⼤全⽬录⼀、命令概述⼆、命令的格式三、命令的参数四、命令的返回值五、命令嵌套调⽤六、数组参数与数组返回值七、流程控制类命令⼋、算术运算命令九、逻辑⽐较⼗、位运算命令⼗⼀、数组操作命令⼗⼆、环境存取命令⼗三、拼⾳处理命令⼗四、⽂本操作命令⼗五、时间操作命令⼗六、数值转换命令⼗七、字节集操作命令⼗⼋、磁盘操作命令⼗九、⽂件读写命令⼆⼗、系统处理命令⼆⼗⼀、媒体播放命令⼆⼗⼆、⽹络通信命令⼆⼗三、其他命令⼆⼗四、我的播放器第三代(改)⼀、命令概述1. 什么是命令:命令是⼀个功能调⽤的开始。

2. 命令的参数:调⽤⼀个功能⽅法时候输⼊的数据或者条件。

3. 命令的返回值:调⽤完功能⽅法后得到的输出结果。

⼆、命令的格式1. 格式: [返回值][所属对象]命令名称([参数1],[参数2],...)。

2. 注意点:[]指的是可以有但不⼀定必须有的东西。

3. 例⼦:返回(1)。

三、命令的参数1. 参数可以是常量也可以是变量。

2. 调⽤时传递给命令的参数必须满⾜该命令对参数的定义,如 “输⼊(⽂本型)”这个例⼦中参数定义为⽂本格式那么传递的参数就必须是⽂本格式,否则就会出现语法错误。

3. 并⾮所有的命令都需要参数,即存在不需要参数的命令,但是命令名称后⾯的“()”以及多个参数之间的间隔符“,”不能没有。

4. 实际开发中不需要将所有的命令背下来,只需要按F1就能够查看明亮的即时帮助⽂档进⾏命令说明的查看。

四、命令的返回值1. ⼤多数命令执⾏完毕都会有返回值,即并不是所有命令结束都会有返回值的。

2. 有的命令返回运算结果,有的命令返回执⾏后的反馈信息,有的命令返回的是逻辑的判断。

3. 命令的返回值的数据类型由命令的语法规定决定,实际开发中往往需要对返回值的数据类型进⾏转换,如编辑框只显⽰⽂本,那么要显⽰数字的话就需要⽤“到⽂本()”命令进⾏转换。

程序:多项选择以及滚动写⾏.版本 2.程序集窗⼝程序集_启动窗⼝.⼦程序 _按钮1_被单击' 画板1.滚动写⾏ (多项选择 (3, “A”, 666, [2018年9⽉9⽇]))' 画板1.滚动写⾏ (多项选择 (2, “A”, 666, [2018年9⽉9⽇]))画板1.滚动写⾏ (多项选择 (1, “A”, 666, [2018年9⽉9⽇])).⼦程序 _按钮2_被单击画板1.滚动写⾏ (多项选择 (2, “A”, 666, [2018年9⽉9⽇])).⼦程序 _按钮3_被单击画板1.滚动写⾏ (多项选择 (3, “A”, 666, [2018年9⽉9⽇]))' 滚动写⾏就是换⾏输⼊' 多项选择就是在后⾯的⼏项中选择五、命令嵌套调⽤1. 命令是可以嵌套使⽤的,嵌套的意思就是命令的参数可以是另外⼀个命令的返回值2. 例⼦:编辑框1.内容=到⽂本(到数值(编辑框1.内容)+1)六、数组参数与数组返回值1. 数组型参数:有的时候命令的参数必须是⼀个数组型变量,如“重定义数组()”的命令程序:播放器三.版本 2.程序集窗⼝程序集_启动窗⼝.⼦程序 _按钮1_被单击.局部变量播放列表变量, ⽂本型, , "6"' 通过数组变量实现多⾸歌曲连续播放播放列表变量= { “F:\CloudMusic\Ace组合 - 楚地⽆歌.mp3”, “F:\CloudMusic\FLOW,GRANRODEO - Howling.mp3”, “F:\CloudMusic\Gemie,SawanoHiroyuki[nZk] - X.U.mp3” }' 播放的⾳乐需要和程序⽂件在同⼀个⽂件夹下' 播放MP3 (1, “藍井エイル - 流星.mp3”)' 尝试不在同⼀⽂件夹下要如何处理?' 增加完全路径试试' 播放MP3 (1, “F:\CloudMusic\Ace组合 - 楚地⽆歌.mp3”)' 尝试成功!通过增加全路径也能够实现跨⽂件夹的mp3播放' 尝试不通过修改源代码就能够播放其它的⾳乐?' 暂时没尝试出来。

易语言之dll文件的编写与引入

易语言之dll文件的编写与引入

易语⾔之dll⽂件的编写与引⼊
打开易语⾔的开发环境,直接新建⼀个动态链接库即可。

点击新建以后,看起来就和写模块⼀样,实际上⼤体步骤是⼀样的,具体差别这样就不叙述了。

直接新建⼀个⼦程序,这样编写即可。

还是需要点击公开,才能被其他程序所调⽤。

⽣成dll⽂件,需要静态编译。

静态编译以后,根据提⽰保存即可。

下⾯讲⼀下易语⾔引⼊dll⽂件。

还是新建⼀个窗⼝程序,拉⼊⼀个按钮,点击,开启按钮事件。

右键点击程序数据,选择新DLL命令。

这样的界⾯,令⼈有点懵,没关系,我们先保存这个源代码到刚才⽣成的dll⽂件下,⽅便我们引⼊。

然后按照如下填写即可。

DLL命令名,就是我们给刚才dll中add函数取的别名;返回值类型,就是add函数返回的数据类型;库⽂件名就是dll⽂件的名称;在库中对应命令名,就是dll中add函数的名字,下⾯的参数名也对应着dll中add函数的两个参数;
这边填写完毕,我们回到按钮事件,输⼊调试输出 (随便取别名 (5, 6))
点击运⾏,再点击按钮1,即可。

可见,dll中的add函数已经被我们完全导⼊并使⽤了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

易语言置入代码速度及完成一些易不好直接完成的操作,是追求置入代码的全部!如果你不同意,那基本上不用往下看。

汇编功底只有靠自己,这里只是讲述在易语言中如何使用“置入代码()”来嵌入汇编及其注意要点。

这是自己的学习体会,如有理解错误或bug请指出,谢!我们先来了解一下置入代码是怎么的一回事汇编中nop(10010000)是空操作指令,我们先使用8个空操作来给程序作个“置入代码”的标记。

于是,在一个新建易程序中输入如下代码:静态编译成可执行文件后,使用OllyDbg反编译一下:PUSH EBP / MOV EBP,ESP 是例行的保存和设置EBP 的代码,因为缺省对堆栈操作的寄存器有ESP 和EBP,而ESP是堆栈指针,无法暂借使用(代码中若有PUSH/POP指令会自动修改ESP值),所以一般使用EBP 来存取堆栈。

聪明的你在这时有没有想发言:“但我们置入代码中没有添加这个指令,它是如何来的?”告诉大家,这是易编译器添加上去的。

易语言为所有子程序初始都添加这么的两句,在“返回()”时再使用MOV ESP,EBP/POP EBP 来平栈,这都是易语言在编译时所做的处理,平常我们都不用关心这些。

但当使用置入代码来嵌入汇编指令,我们就不得不了解。

现暂且放下,后面再来说明我们要了解的的东西。

跳出具体指令,看看反汇编子程序的框架。

置入的代码(8个nop)“完全”的位于一个子程序内。

对此应了解:我们置入代码()严格来说是置入汇编代码“片段”。

不要希求能置入一个完整pe数据,易语言会在编译链接时写入易的文件头。

置入代码()就不能再使用.data或invoke messagebox之类。

因为易语言不会再为我们置入的代码去修改数据段及导入表。

辅助工具的选用作为铺垫,我们先来了解一下易语言置入代码汇编工具。

云外归鸟(大鸟)提供了一个功能完善、界面友好、使用免费的工具“易语言置入代码NASM汇编生成工具v1.0 ”NASM指令简单明了,而且能将汇编代码片段直接编译成二进制文件,它不强求源码是一个完整的汇编程序。

这也可能是大鸟选择使用NASM编译器的原因(个人猜想)。

大鸟在易语言论坛提供了该工具的源码下载。

在此感谢大鸟为广大易友所做的贡献!相信使用汇编的人更多的是喜欢MASM,这从Aogo所写“MASMPLUS”被广泛下载使用可见一斑。

本人在大鸟提供源码的前提下修改了小部分代码,让该工具支持MASM编译。

若大鸟认为被侵权,请指出,本人QQ:109544089。

本人当即删除下载链接及正式致歉!MASM不支持直接编译成二进制文件,这当中要如何处理?答案是:链接成COM文件。

因为DOS 中COM文件是没有文件头,系统载入后直接从第一个语句运行。

这提供了一个迂回办法来生成置入代码所需字节集数据。

这样一来,我们就必须定义一个完整的汇编源码去编译链接,这就是为什么在易语言置入代码MASM汇编工具当中存在.586、.model、option等这样的几行语句,而在NASM汇编工具中没有的原因了。

这教程均使用MASM汇编置入工具,请大家下载配合教程使用。

下载地址:/read.php?tid=271694提供一个完整源码去编译,虽然多出了几行语句,但它却拥有NASM汇编工具所不能比拟的优势:定义函数(子程序)参数及局部变量供汇编代码引用,而免去使用如:[ebp+8]这样的书写,直接明瞭。

当然代码是一致的,只是书写的引用形式不同。

第一个例子——“取颜色()”例子实现与易语言自身所带“取颜色值()”同样功能,参数形式也一样。

在这个例子中,我们一同来看看如何的在“置入代码MASM汇编工具”中定义参数供汇编代码引用。

打开“置入代码MASM汇编工具”,在注释行至"end"行之间,键入上述汇编代码(如上图7-17行代码)。

代码中使用proc定义了一个含有“_red ”、“_green”、“_blue”三个参数的函数(子程序)。

然后选择“编译”菜单→“编译为置入代码”或右侧的蓝色三角按钮,这样就能生成我们置入代码所需的字节集数据。

粘贴生成的的代码入易程序,生成如下:我们再来反汇编一下:汇编代码“movzx eax,_red”编译后成“MOVZX EAX,BYTE PTR SS:[EBP+8]”汇编代码“movzx eax,_green”编译后成“MOVZX EAX,BYTE PTR SS:[EBP+C]”汇编代码“movzx eax,_blue”编译后成“MOVZX EAX,BYTE PTR SS:[EBP+10]”这样一来,我们就可以完全省去对形如[ebp+8]这样的地址引用,而使用直观的“_reg”参数,余下的工作就让MASM编译器来帮忙,替换成“[ebp+8]”,这算得上一个大优势吧!可别高兴得太早,在子程序开始处怎么会看到两行重复语句“PUSH EBP / MOV EBP , ESP”?这是因为我们在汇编源码上定义了一个“MAIN"子程序,MASM编译时就会自动加上这么两句,同时易语言也会在编译“取颜色()”子程序时添加上这两句的缘故。

为了修正堆栈,汇编源码在定义函数后第一个语句即为“LEAVE”。

当然,如果大家不喜欢这样重复的代码(我自己就不喜欢,汇编为的就是精简),大可以手工删除第一个“LEAVE”(C9)(201)及之前的字节集(在本例为:{ 85 , 139 , 236 , 201 })即可,余下的就是我们真正需要执行的代码。

大家要记住,这参数的引用是按顺序而不是名字!你可以将“红、绿、蓝”的名字改成“一、二、三”。

看看反汇编最后两句“LEAVE / RETN 0C”,而汇编源码中只有“ret”,怎么会~~?这是因为在编译时由MASM编译器根据参数个数进行修改,以便丢掉三个参数来平衡堆栈,这也算是另一个小优势——不用自己计算ret 后应当填写什么数值!使用这种方法引用参数及局部变量必须与易子程序的参数、变量个数对齐。

如果易语言子程序的参数有一个且为可空,此时要注意:实际上参数并不是一个,而是两个。

第一个用于表示参数是否为空,第二个才是真正传递的参数。

若不对齐引用,我还不知道会发生什么,多半蓝屏死机吧~~哈哈~~本人可不对会你硬盘及未保存数据负责哦。

最后,大家可以自己来试试使用置入代码编写的子程序“取颜色()”所得结果是否与易语言“取颜色值()”一致!第二个例子——“九九乘法表()”看到这个表格,有没有提起大家儿时背诵的情景~~源码下载:/read.php?tid=271756不多说,直接上源码:.586.model flat,stdcalloption casemap:none.code;若没有特别需求请不要改动已有的几行。

;请在下面至'end'前输入相关代码:mov ebx,[ebp+8]mov ebx,[ebx]mov eax,2573mov [ebx],axadd ebx,2xor ecx,ecxinc ecxxor eax,eax.while ecx <= 9push ecxxor edx,edxinc edx.repeatpush edx;在下面输入双循环执行代码:mov eax,ecxadd eax,30hmov [ebx],almov eax,49569mov [ebx+1],axmov eax,edxadd eax,30hmov [ebx+3],almov eax,'='mov [ebx+4],almov eax,ecxmul dlmov dl,10div dladd eax,12336mov [ebx+5],axmov eax,32mov [ebx+7],aladd ebx,8pop edx.break .if edx >= ecxinc edx.until edx > 9mov eax,2573mov [ebx],axadd ebx,2pop ecxinc ecx.endwmov eax,0mov [ebx],alleaveret 4end使用“置入代码MASM汇编工具”将上述代码转换成置入代码所需字节集:置入代码({ 139, 93, 8, 139, 27, 184, 13, 10, 0, 0, 102, 137, 3, 131, 195, 2, 51, 201, 65, 51, 192, 235, 89, 81, 51, 210, 66, 82, 139, 193, 131, 192, 48, 136, 3, 184, 161, 193, 0, 0, 102, 137, 67, 1, 139, 194, 131, 192, 48, 136, 67, 3, 184, 61, 0, 0, 0, 136, 67, 4, 139, 193, 246, 226, 178, 10, 246, 242, 5, 48, 48, 0, 0, 102, 137, 67, 5, 184, 32, 0, 0, 0, 136, 67, 7, 131, 195, 8, 90, 59, 209, 115, 6, 66, 131, 250, 9, 118, 184, 184, 13, 10, 0, 0, 102, 137, 3, 131, 195, 2, 89, 65, 131, 249, 9, 118, 162, 184, 0, 0, 0, 0, 136, 3, 201, 194, 4, 0 })易语言调用格式:“九九乘法表()”调用如上图。

调用前必须先“取空白文本()”这是易语言给“乘法表”这个文本分配内存空间。

若不然“九九乘法表(乘法表)”给“乘法表”文本写入内容时必定强制退出!我们再回过头来看看汇编源码:“mov ebx,[ebp+8] / mov ebx,[ebx]”两句取得“乘法表”文本变量数据的内存地址。

(要对易语言其他数据类型作操作,必须先了解该数据类型的具体保存形式,在此不讲述,要不跑得太远^_^没有这么多时间,而且我还没有完全了解易语言的所有数据。

)“mov eax,2573 /mov [ebx],ax”两句先给“乘法表”加上一个#换行符。

再通过“.while”及“.repeat”构造一个双循环。

(这两个均是MASM的高级语法,它们不是CPU指令。

MASM编译时会将它们换成相应的CPU指令,应当相信微软已经为这优化得相当好)循环语句内就是一些完成乘法表的具体操作。

当中“ .break .if edx >= ecx"定义了在第二个循环记数器edx大于或等于第一个循环记数器ecx时跳出第二个循环,以生成阶梯式的乘法表。

使用了这MASM高级语法,是不是让源码看起来更简单明了?!这也是本人喜欢MASM的亮点这一。

相关文档
最新文档