用汇编语言编写一个小程序(比如hello,word!)请懂的人帮忙提供源码

用汇编语言编写一个小程序(比如hello,word!)请懂的人帮忙提供源码,第1张

您正在看的汇编语言是:hello,world!win32汇编小程序

首先我们看一个“复杂”的Win32汇编程序

程序用来显示一个消息框

--------------------------------------------------

;文件名:3asm

386

model flat ,stdcall

NULL equ 0

MB_OK equ 0

ExitProcess PROTO :Dword

MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:Dword

includelib kernel32lib

includelib user32lib

data

szText db "Hello, world!",0

szCaption db "Win32Asm",0

code

start:

push MB_OK

lea eax,szCaption

push eax

lea eax,szText

push eax

push NULL

call messageboxa

xor eax,eax

push eax

call exitprocess

end start

--------------------------------------------------

编译链接:

分下面两步进行:

ml /c /coff 3asm

link /subsystem:Windows /libpath:d:\masm7\lib 3obj

第一步编译生成3obj文件

/c 表示只编译,不链接

/coff 表示生成COFF格式的目标文件

第二步链接生成3exe文件

/subsystem:windows 表示生成Windows文件

/libpath:d:\masm7\lib 表示引入库的路径为:d:\masm7\lib。

在安装Masm32后,引入库位于Masm32\Lib目录下。

也可设置环境变量Lib的值:在dos提示符下键入Set Lib=d:\masm7\lib,这样“链接”就可简单写成:

link /subsystem:Windows 3obj,试想一下,在程序调试过程中,修改源程序是常用的事啦,每次编译链接都要带/libpath:那该有多烦人呢。当然,我们也可在源程序中直接给出引入库的位置,这样,链接时就方便啦,如下:

includelib d:\masm7\lib\kernel32lib

includelib d:\masm7\lib\user32lib

--------------------------------------------------

执行:在dos提示符下键入3,回车,出现一个消息框,哈哈,真正的Win32程序!

--------------------------------------------------

深入分析:

看一下源程序,有这么两行:call messageboxa\call exitprocess。大家一看都知道,这是子程序调用,但是我们并没写这样的子程序,事实上,这些是API函数。作为函数,我们在调用时可能需要传送给函数一些参数,程序怎么知道传送的参数有哪些,类型是什么呢?就是通过函数原型定义,如下所示:

ExitProcess PROTO :Dword

MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:Dword

可以看出,ExitProcess有一个参数,MessageBoxA有四个参数,这些参数都是Dword类型。

在Win32中,参数的传递都是通过堆栈来完成的。象MessageBoxA这个函数有四个参数,究竟是左边的先压入堆栈还是右边的先入栈呢?model flat,stdcall给出了答案。stdcall 指定参数是从右到左压入堆栈的,且调整堆栈是在子程序返回时完成的。在源程序中不需要用“add sp,值”来保持堆栈平衡。对MessageBox,在API手册中是这样定义的:

int MessageBox(

HWND hWnd, // handle of owner window

LPCTSTR lpText, // address of text in message box

LPCTSTR lpCaption, // address of title of message box

UINT uType &n

您正在看的汇编语言是:hello,world!win32汇编小程序。

bsp; // style of message box

)

;所以会有我们的程序段:

push MB_OK

lea eax,szCaption

push eax

lea eax,szText

push eax

push NULL

call messageboxa

看看上面的程序,不难想到,假如在写程序时,少往堆栈里压入一个数据,那将是一个致命的错误。能不能将这种检查参数个数是否匹配的工作交给计算机来完成呢?这是可以的,INVOKE指令可以帮助我们完成这样的工作。假如你的参数个数不正确,连接器将给出错误提示。所以,极力建议你使用invoke代替call来调用子程序,当然,这不是绝对的。使用invoke上面的指令就可简写成下面的样子,看起来简炼多啦,查错也方便啦!

invoke messageboxa, NULL,addr szText,addr szCaption,MB_OK

另外,像NULL,MB_OK都是一些常量,这样的常量有很多,还有很多的结构,如果在我们的程序中一开始都写这么多的东西,可能一下子就把你吓怕啦,也容易出错,更不便于看程序的主要部分。hutch整理的Windowsinc包含了WIN32编程所需要的常量和结构体的定义,我们可简单的用一个include指令将这些常量和结构的定义插入到我们的文件中:

include d:\masm32\include\Windowsinc

但是Windowsinc中并不包含函数原型的声明,还要从其他的头文件中得到函数原型的声明,比如:messageboxa的原型声明在user32inc文件中,exitprocess在kernel32inc文件中。这些头文件都放在 \masm32\include文件夹下。

还有,要用Windowsinc,必须使用option casemap:none,它的意思是告诉 MASM 要区分符号的大小写,譬如:start和START是不一样的。否则,一个小小的程序,可能会出成百上千的错误呀!

其他的,就不再细说啦,到此,上面的程序可重新修改如下:

-----------------------------------------------------------------

;最终的结果

386 ;表示要用到386指令

model flat,stdcall ;32位程序,要用flat啦!;stadcall,标准调用

option casemap:none ;区别大小写

include Windowsinc ;包括常量及结构定义

include kernel32inc ;函数原型声明

include user32inc

includelib kernel32lib ;用到的引入库

includelib user32lib

data;数据区,定义2个字符串

szText db "Hello, world!",0

szCaption db "Win32Asm",0

code ;代码开始执行处

start:

invoke MessageBox,NULL,addr szText,addr szCaption,MB_OK

;调用MessageBoxAPI函数

invoke ExitProcess,NULL ;程序退出

end start;结束

------------------------------------

编译链接:

ml /c /coff /I d:\masm7\include 3asm ;注意开关符识别大小写

link /subsystem:Windows /libpath:d:\masm7\lib 3obj

/I d:\masm7\include 表示inc文件的位置,也可设置环境变量Set include=d:\masm7\include来简化 *** 作,也可在程序中明确指出inc的位置。

前面讲的都是用两条指令来完成编译链接,实际上用一条指令也可完成,如下:

ml /coff /I d:\masm7\include 3asm /link /subsystem:Windows /libpath:lib

若inc及引入库在源程序中都明确指出其位置,则可简化为:

ml /coff 3asm /link /subsystem:

Option Explicit

Private Sub Command1_Click() '通过对话框选择装载到Image1图像框

CDlgFileName = ""

CDlgShowOpen

If CDlgFileName <> "" Then

Image1Picture = LoadPicture(CDlgFileName)

End If

End Sub

Private Sub Command2_Click()

Data1RecordsetAddNew '新增记录

End Sub

Private Sub Command3_Click()

With Data1Recordset

Delete '删除记录

MoveNext '移动记录指针到下一条记录

If EOF Then MoveLast 'EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后

End With

End Sub

Private Sub Command4_Click()

Dim s As String

With Data1Recordset

s = Bookmark '返回唯一标识 Recordset 对象中当前记录的书签,或者将 Recordset 对象的当前记录设置为由有效书签所标识的记录。

FindFirst Text4Text

If NoMatch Then

MsgBox "数据未找到"

Bookmark = s

End If

End With

End Sub

Private Sub Command5_Click()

Dim s As String

With Data1Recordset

s = Bookmark

FindNext Text4Text

If NoMatch Then

MsgBox "数据未找到"

Bookmark = s

End If

End With

End Sub

Private Sub Form_Load()

Data1DatabaseName = AppPath & "\MyDatamdb" '加在相对路径下MyDatamdb数据库

End Sub

Private Sub Label2_Click()

End Sub

自助搭建可以去看下悟空源码,那里代理可以提供微信小程序自助开发,不限制数量,商城小程序,门店小程序,外卖小程序,拼团小程序,同城信息小程序,企业官网小程序等等都可以一键制作。他们还提供微信开发,微网站开发等等~

至于开发多少钱,这样看你采用以下哪种模式:

第一种就是自己开发自己做。这也是最省钱的抄方式,如果我们自己来开发的话,就可以省掉那些付给开发人员的钱。通过这种方式,我们如果开发个人版的小程序,不需要花费一分钱就可以拥有自己的小程序。而如果我们要开发一个具有支付功能的小程序商城,是企业版的话,就需要我们在进行微信认证,而我们只需要支付300元的认证费用即可。

第二种就是知自己有一个开发部门或者开发人员。如果是这种情况的话,我们也是和第一种情况一样的,但是还需要支付员工的费用,这也要算在开发一个小程序的成本中,毕竟,员工是需要公司养着的。而这个成本的多少就要取决于你开给员工的工资多少了,一般一个能够独立开发小程序的员工基本工资不会低于一万,这还是在小城市的基本工资,如果是北上广,需要大概两万到五万之间。而如果你养的是一个开发部门的话,这个费用将会更高。

第三种就是找一道个具有开发微信小程序商城资质的开发公司。这一个方式是在自己没有开发能力的情况下,最方便也比较省钱的方式。因为我们不需要耗费那么多精力去自己开发,也不需要花费太多的钱去养一个开发人员或是开发部门,我们只需要支付开发一个小程序的市场价格即可。这个要看选择的开发方式,比如:

1、自己组建技术团队自己开发,需要的人员有百产品经理、框架工程师、JAVA、PHP、前端、后端、测试工程师,开发周期在1-2个月。人员成本10-20万,后期维护成本没算。(不推荐)

2、购买别人的小程序源码,并且自己配置服务器,再找个技术度人员专职维护。源码费用一般10000-30000,服务器一年至少3000,维护成本每月6000以上。(不推荐)

3、使用版第三方小程序,购买第三方小程序使用账号,总费用根据自身需求,费用2000以内到几千元不等,不用担心技术维护、不用建服务器,拿过来就可以使用,还可以根据自己的搭建要求设计店铺和权绑定公众号。(推荐)开发一个小程序一般需要多少钱呢?市面上开发小程序不外乎以下三种模式

模式一:自己开发

自己开发,省去了开发费用,只需要支付300微信认证,开通小程序费用。前提条件是你自己搞技术开来发,懂行,自己上传代码进行开通。

模式二:模板小程序

只要用已经开发好的各行各业的模板,直接套自用就可以,价格便宜些,功能上就没有定制版那么完美,都是一些基础功能,市场价在几千左右,这只是一个大概价格,重点还是你对功能开发要求。

模式三:定制开发版小程序

会根据你的需求进行zhidao定制功能和UI设计。这个开发的成本比较高,大概几千到几万不等,视具体功能而定。小程序开发制作需要多少钱,这里面涉及到哪些项目,这样才能清楚一个小程序开发制作下来花了多少钱,以及这些钱都花在了哪里。一个小程序的花销主要这几部分组成:基本认证费、icon设计费、设计开发成本费用、域名成本费用、服务器成本费用以及高级功能等费用。

1、认证服务费300元,如果不需要使用微信支付等需要认证才能实现的功能,此项可以不认证,及免收费。如果你有已经通过微信认证的公众号,那可以通过公众号后台快速注册认证小程序,可以免去300元认证服务费。

2、制作一个icon的成本的典型值为100元。不过由于icon是可以上线后更改的,所以你也可以先随便找一张不丑的作为icon,待上线后看看推广效果,确定效果好、有前景之后,再制作正式的icon替换临时icon。

3、一个普通的小程序页面的设计开发成本一般为500元,复杂一点的800元。这里“复杂”一般指的是页面特别长、内容特别多、或者有动画的情况。设计开发成本这一部分是最不稳定的,往往需要开发者和需求方深入沟通后才能确定。

开发成本费用会占到整个费用的90%比例以上。技术开发团队涉及到的部门广,人员多。其中包括前期的需求文档撰写、前端开发、后端开发、UI设计、服务器部署、测试维护、产品修改和专门用户策划人员。小程序开发费用因小程序功能和复杂度而决定的,简单功能的微信小程序几千,中等功能的微信小程序几万,高等复杂程度的微信小程序开发费用则可能达到10万以上。

4、域名的价格随着域名的好记程度而波动。最便宜的七八块钱,中等价格六七十,特别好的可以很高。总体来说,大致是50元上下的成本。

不过域名的使用是需要备案的,备案本身涉及一些材料邮递的费用,不是很高,一般还会涉及一个月的服务器费用,这个我们下一段讲。最重要的是,备案流程快也要半个月,一个月是比较稳妥的期望时长,这个时间成本大家还是要注意下。

5、域名备案时要求说明主机IP,这意味着备案过程中你必须有一台云主机正常运行。一台云主机一个月的费用在阿里云是77元,腾讯云是65元。这两个价格都是最小配置的价格(具体以官方价格公布为主)。

小程序是由服务器支持运行的,可以采用两种服务器方式——自建服务器和租赁云服务器。自建服务器的优点是安全,缺点是费用高,维护成本高;云服务器基本上没有缺点,其安全方面的问题已经有很高的保障,其优点是云部署,共享资源,成本低, *** 作灵活,因而大多数商户都会选择直接租赁云服务器,因为自己进行开发的费用成本太高,而服务器租赁以及维护费用更划算。小程序服务器费用多少是取决于服务器的存储空间和带宽等因素,简单的小程序年服务器费在千元以内,存储空间大或访问量大的小程序服务器费用需要以万为单位。

6、高级功能费用是可以避免的、但是每个人随着业务发展会碰到的费用。如果你的小程序里需要支付的功能,那么需要300元的微信认证费用。如果你的小程序积累了大量的用户数据和资源,那么会有对应的存储费用和流量费用,不过这些费用都不高,刚开始一般是免费的,即便涉及费用,早期一个月十几块钱也能搞定。

7、后期运营维护和更新费用。小程序跟所有APP一样,都是不断更新迭代的,需要专人运营维护,一般维护和更新成本只占开发成本的十分之一。维护包括小程序Bug修改,服务器的常规维护,系统安全维护等。如果遇到有些公司不收取维护费的一定是把维护费用算在开发费用里面或者当做首年维护费的优惠。

总结一下就是:几百块钱到几千块钱甚至几万块几十万块钱都有可能,关键是看自己需要采取什么模式去制作开发,是用模板还是专业定制,都需要根据自己的经济预算去做决定,还有根据自己小程序的功能需求去开发开发一个小程序一般需要多少钱呢?这个很难给你一个标准答案,主要还是看你的实际需求来。市面上做小程序不外乎在三种情况:

1行业模板

根据不同行业需求开发的行业模板,各行业用户可以选择适合自己的模板一键开启使用,并支持上百种营销插件,满足商家的日常功能需求。行业模板套餐价格是首年4999元,买一年送一年。

2模板定制

提供个性化模板定制服务,用户4102可以根据自己的需求定制个性化首页风格及商品详情页,同时增加用户所需的个性化营销插件,让商家的小程序1653独一无二。模板个性化定制套餐价格是首年是8999元,买一年送一年。

3企业开发

可以根据企业客户的具版体需求,针对品牌企业在发展过程中遇权到的“效率、品牌、营销及数据”等四大难题,进行需求分析定位、用户体验设计及功能架构规划等,最终提供量身定制的小程序解决方案。大客户模板开发费用需根据客户的具体需求报价。

以上就是关于用汇编语言编写一个小程序(比如hello,word!)请懂的人帮忙提供源码全部的内容,包括:用汇编语言编写一个小程序(比如hello,word!)请懂的人帮忙提供源码、一个VB小程序的源代码~~~帮忙注释一下!!!!!高分!!在线等!!、小程序自助搭建源码哪里有等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10123733.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存