看到还有人喜欢汇编的安利一个上位机汇编程序开发

2019-12-10 18:11发布

本帖最后由 CoolBird007 于 2019-10-12 19:51 编辑

没错,说的就是用汇编编写WINDOWS程序。
这里只作为一个最最最简单的例程,喜欢的可以买书去。

首先,从这里下载 MASM32V11。只有几兆。
http://www.masm32.com/download.htm

我是从下面两个连接下载的。
Australia 1
For programmers in Australia, China, South East Asia and the Pacific region.
下载网站从中国的程序员。

Australia 2
For programmers in Australia, China, South East Asia and the Pacific region.
下载网站从中国的程序员。

下载后解压,点install安装(注意提示,是要你点那个写着install图标)。。一路确定下去就行了。

完装完成之后,给程序添加环境变量,安装过JDK的就知道怎么添加了,不过。这里给一个批处理文件,在命令行模式下运行就行了。

var.bat内容如下,设置masm32环境变量。保存到 C:WINDOWS目录下。

@echo off
rem 请根据 Masm32 软件包的安装目录修改下面的 Masm32Dir 环境变量!
set Masm32Dir=C:Masm32
set include=%Masm32Dir%Include;%include%
set lib=%Masm32Dir%lib;%lib%
set path=%Masm32Dir%Bin;%Masm32Dir%;%PATH%
set Masm32Dir=
echo on

然后来编写第一个 helloword.


用记事本编写 hello.asm,当然你也可以用任何文本编辑软件,也可以使用MASM32包里的开发环境。

这是分隔线,没鸟用------------------------------------------------------------------------

                .386
                .model flat,stdcall
                option casemap:none
include                windows.inc
include                user32.inc
includelib        user32.lib
include                kernel32.inc
includelib        kernel32.lib
                .data

szCaption        db        '恭喜',0
szText                db        '当您看到这个信息的时候,您已经可以编译Win32汇编程序了!',0

                .code
start:
                invoke        MessageBox,NULL,offset szText,offset szCaption,MB_OK
                invoke        ExitProcess,NULL
                end        start

这是分隔线,没鸟用------------------------------------------------------------------------

保存为 asm文件,记事本默认保存为TXT文件,所以,在保存文件名里输入"hello.asm",就是加上双引号就行了。

假设你保存到了C盘根目录,打开命令提示符(开始菜单-所有程序-附件-命令提示符)
运行之前的环境变量批处理文件。

c:>var 回车
c:>ml /c /coff hello.asm
c:>Link /subsystem:windows hello.obj

编译之后就可以看到生成的 hello.exe,双击运行就可以看到效果了。

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

再来一个基本控制的例程,程序看附件。不能上传太多了,因为是买书附带的光盘。只是让大家看看其实跟用VC一样可以写出大型应用程序的。

Control.rar (53.41 KB, 下载次数: 7) 2019-10-12 19:49 上传 点击文件名下载附件
control.jpg (118.23 KB, 下载次数: 0) 下载附件 2019-10-12 19:49 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
1a2b3c
1楼-- · 2019-12-10 20:08
你写出来的一个程序才几十K不到1M也敢叫电脑软件?人家现在程序员动不动同样的功能线程序起码1个G!那才叫程序:)
lyer
2楼-- · 2019-12-11 00:59
本帖最后由 lyer 于 2019-10-12 16:11 编辑

以前写汇编课大作业用过masm32
masm的各种宏很好用,和高级语言差不多,
复杂运算可以用simd写成函数编译成obj,在高级语言调用编译时直接link
cne53102
3楼-- · 2019-12-11 05:26
有意思,喜欢这种东西
wye11083
4楼-- · 2019-12-11 09:06
1a2b3c 发表于 2019-10-12 16:02
你写出来的一个程序才几十K不到1M也敢叫电脑软件?人家现在程序员动不动同样的功能线程序起码1个G!那才叫 ...

其实代码很少的,占地方的一是编译器生成的一些诊断信息,二是调试信息,三是导入导出信息,四是内嵌的一些model、bin数组文件等等。
qiaoqiang
5楼-- · 2019-12-11 13:41
 精彩回答 2  元偷偷看……
lw32
6楼-- · 2019-12-11 19:33
大学微机原理学过,用汇编做实验
控制IO口,读写数据,感觉跟写MCU程序也差不多,那时也会用单片机了

一周热门 更多>