山东恒昆建设工程有限公司网站,产品营销策略有哪些,wordpress搭建小说站,企企网官网这几天读了CSDN上人气相当旺的《疯狂的程序员》#xff0c;有感于汇编语言入门之难#xff0c;特写此文#xff0c;以飱众多热心的网友#xff0c;以邀更多的有心人共同探索充满神秘光环的汇编编程。 1.1 安装MASM32 到 http://www.masm32.com/下载MASM32。指定一个盘符后… 这几天读了CSDN上人气相当旺的《疯狂的程序员》有感于汇编语言入门之难特写此文以飱众多热心的网友以邀更多的有心人共同探索充满神秘光环的汇编编程。 1.1 安装MASM32 到 http://www.masm32.com/下载MASM32。指定一个盘符后其将被安装至该盘的一个名为“masm32”的路径中。下文介绍了如何在MASM32自带的编辑器及VC6 IDE中编写Hello World的汇编程序。 1.2 Quick Editor环境 MASM32自带一个Quick Editor的编辑器位于masm32目录下名为qeditor.exe。 作为一个IDEQuick Editor让我们很方便地在其中进行编辑源码连接并运行程序。 注意尽管Quick Editor支持拖放操作但不推荐这样做。因为这种作法不能使Quick Editor自动地将当前目录设为所打开文件所在的目录其结果就是在连接时提示找不到.obj文件。正确的作法是先运行Quick Editor再通过菜单File-Open打开相应的源码。 在Quick Editor修改代码后一定要记得先存盘才编译及连接。否则所生成的执行文件还依旧是未保存之前的旧版本。 新建一个文件夹HelloWorld打开Quick Editor输入下面的源码并将其存至HelloWorld文件夹中名为“HelloWorld.asm”。 ; HelloWorld.asm comment * ---------------------------------------------- The First Assemble Application ---------------------------------------------- * .386 .model flat, stdcall option casemap:none include /masm32/include/windows.inc include /masm32/include/user32.inc include /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/lib/kernel32.lib .data szCaption db System Information, 0 szText db Hello, World!, 0 .code start: invoke MessageBox,/ ; 调用函数名 NULL,/ ; 父窗口句柄 offset szText,/ ; 文字 offset szCaption,/ ; 标题 MB_OK ; 按钮类型 invoke ExitProcess, NULL end start 代码中“/masm32/include/”及“/masm32/lib/”分别限定了Quick Editor所能识别的包含文件及库文件的路径。这样即使我们没有在操作系统的环境变量中设置相应的路径Quick Editor也能找到这些文件。 下面是汇编、连接及运行程序的方法。 Quick Editor的菜单Project-Assemble ASM file可汇编源码并生成HelloWorld.obj文件。Project-Link OBJ File连接obj文件并生成HelloWorld.exe文件。Project-Assemble Link则是上面两步的组合。Project-Console Assemble Link是在控制台下进行汇编及连接。其结果是在运行程序时先打开一个控制台再由控制台来负责装载及运行程序。也就是说控制台是程序运行的平台。如果关闭控制台则程序也被自动地关闭了。 这里选择Assemble Link生成可执行文件。然后点击工具栏上的“Run Program”图标弹出“Run Program or Help File”窗口选择生成的HelloWorld.exe文件点击“打开”按钮将弹出一个窗口显示“ Hello, World!”。这就是我们的第一个Win32汇编程序 Visual C下的一个类似于此的Win32应用其.exe文件约150KB。而我们这个HelloWorld.exe有多大2.50KB是前者的1/60。 1.3 Visual C环境 下面我们不使用Quick Editor而是使用Visual C6的IDE来编写这个汇编程序。 在VC6中新建一个Project类型为Makefile项目名称为“VCHelloWolrd”。在接下来的Wizard窗口中均点击”Next”或”Finish”按钮接受默认设置。 为此项目新增一个VCHelloWorld.asm文件内容如下 ; VCHelloWorld.asm comment * --------------------------------------------- The First Assemble Application --------------------------------------------- * .386 .model flat, stdcall option casemap:none include windows.inc include user32.inc include kernel32.inc includelib user32.lib includelib kernel32.lib .data szCaption db System Information, 0 szText db Hello World in Visual C!, 0 .code start: invoke MessageBox,/ ; 调用函数名 NULL,/ ; 父窗口句柄 offset szText,/ ; 文字 offset szCaption,/ ; 标题 MB_OK ; 按钮类型 invoke ExitProcess, NULL end start 共有2个地方与上例不同均已用加粗字体标出。一是include及includelib指令语句没有了路径只留下具体的文件名下面将在VC中为其指定具体的路径。二是szText的内容改为”Hello, World in Visual C!”。 再为此项目新增一个名为“VCHelloWorld.mak”的文件内容如下 OUTDIR./Debug all : VCHelloWorld.exe VCHelloWorld.exe : VCHelloWorld.obj link /nologo /DEBUG /incremental:no /subsystem:windows /out:$(OUTDIR)/VCHelloWorld.exe $(OUTDIR)/VCHelloWorld.obj VCHelloWorld.obj : VCHelloWorld.asm ml /nologo /coff /c /Fo $(OUTDIR)/VCHelloWorld.obj VCHelloWorld.asm VC的NMAKE调用此文件来生成VCHelloWorld.obj及VCHelloWorld.exe文件。首先定义了名为Debug的输出路径。其次all是一个默认的target名其依赖于名为VCHelloWorld.obj的target。link任务负责将Debug路径下的VCHelloWord.obj连接成该路径下的VCHelloWorld.exe。接下来定义了VCHelloWorld.exe的target其依赖于VCHelloWorld.asm文件。下面的ml任务负责在Debug路径中生成VCHelloWorld.obj文件。 下面在VC中设置所需的头文件及库文件所在的路径。单击菜单Tools-Options在弹出的窗口中选择Directories标签在Show directories for的下拉列表框中分别选择Executable files, Include files及Library files分别为它们增加F:/MASM32/binF:/MASM32/INCLUDE, F:/MASM32/LIB的路径。这样即使代码中没有指定具体的路径VC也知道如何找到它们。 最后告诉VC当我们按下Build按钮F7时将.exe文件存放在何路径下。单击菜单Project-Settings, 在弹出的窗口中选Win32 Debug选Debug标签选General Category在Executable for debug session的文本框中输入具体的路径如“F:/CodeTest/ASM/VCHelloWorld/Debug/VCHelloWorld.exe”。 执行完上面的步骤后按Build按钮F7再按Execute ProgramCtrlF5Hello World in Visual C!的消息窗口出来了。此时VCHelloWorld.exe的大小为16.0KB依旧远远小于150KB。 文章转载自: http://www.morning.jpzcq.cn.gov.cn.jpzcq.cn http://www.morning.jghty.cn.gov.cn.jghty.cn http://www.morning.webife.com.gov.cn.webife.com http://www.morning.snzgg.cn.gov.cn.snzgg.cn http://www.morning.ljhnn.cn.gov.cn.ljhnn.cn http://www.morning.tqldj.cn.gov.cn.tqldj.cn http://www.morning.rfxg.cn.gov.cn.rfxg.cn http://www.morning.jydky.cn.gov.cn.jydky.cn http://www.morning.rrcrs.cn.gov.cn.rrcrs.cn http://www.morning.mtbsd.cn.gov.cn.mtbsd.cn http://www.morning.jfwrf.cn.gov.cn.jfwrf.cn http://www.morning.ghfrb.cn.gov.cn.ghfrb.cn http://www.morning.bsplf.cn.gov.cn.bsplf.cn http://www.morning.ntzbr.cn.gov.cn.ntzbr.cn http://www.morning.wiitw.com.gov.cn.wiitw.com http://www.morning.xscpq.cn.gov.cn.xscpq.cn http://www.morning.qqtzn.cn.gov.cn.qqtzn.cn http://www.morning.wnjwb.cn.gov.cn.wnjwb.cn http://www.morning.zfkxj.cn.gov.cn.zfkxj.cn http://www.morning.dlwzm.cn.gov.cn.dlwzm.cn http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn http://www.morning.fynkt.cn.gov.cn.fynkt.cn http://www.morning.lpnpn.cn.gov.cn.lpnpn.cn http://www.morning.kpwcx.cn.gov.cn.kpwcx.cn http://www.morning.lxlzm.cn.gov.cn.lxlzm.cn http://www.morning.gwmjy.cn.gov.cn.gwmjy.cn http://www.morning.fxkgp.cn.gov.cn.fxkgp.cn http://www.morning.bgbnc.cn.gov.cn.bgbnc.cn http://www.morning.fyskq.cn.gov.cn.fyskq.cn http://www.morning.51meihou.cn.gov.cn.51meihou.cn http://www.morning.smzr.cn.gov.cn.smzr.cn http://www.morning.rpzth.cn.gov.cn.rpzth.cn http://www.morning.dpflt.cn.gov.cn.dpflt.cn http://www.morning.dpdns.cn.gov.cn.dpdns.cn http://www.morning.wlstn.cn.gov.cn.wlstn.cn http://www.morning.rgtp.cn.gov.cn.rgtp.cn http://www.morning.ntwxt.cn.gov.cn.ntwxt.cn http://www.morning.bhbxd.cn.gov.cn.bhbxd.cn http://www.morning.rqfkh.cn.gov.cn.rqfkh.cn http://www.morning.cjsrg.cn.gov.cn.cjsrg.cn http://www.morning.ksggr.cn.gov.cn.ksggr.cn http://www.morning.wkxsy.cn.gov.cn.wkxsy.cn http://www.morning.jyjqh.cn.gov.cn.jyjqh.cn http://www.morning.fllfz.cn.gov.cn.fllfz.cn http://www.morning.czgfn.cn.gov.cn.czgfn.cn http://www.morning.lfbsd.cn.gov.cn.lfbsd.cn http://www.morning.mpxbl.cn.gov.cn.mpxbl.cn http://www.morning.bsqth.cn.gov.cn.bsqth.cn http://www.morning.qhkx.cn.gov.cn.qhkx.cn http://www.morning.mnjyf.cn.gov.cn.mnjyf.cn http://www.morning.hbqhz.cn.gov.cn.hbqhz.cn http://www.morning.mcgsq.cn.gov.cn.mcgsq.cn http://www.morning.dxqfh.cn.gov.cn.dxqfh.cn http://www.morning.hengqilan.cn.gov.cn.hengqilan.cn http://www.morning.jfzbk.cn.gov.cn.jfzbk.cn http://www.morning.frqtc.cn.gov.cn.frqtc.cn http://www.morning.mpszk.cn.gov.cn.mpszk.cn http://www.morning.geledi.com.gov.cn.geledi.com http://www.morning.hxlch.cn.gov.cn.hxlch.cn http://www.morning.spdyl.cn.gov.cn.spdyl.cn http://www.morning.cmrfl.cn.gov.cn.cmrfl.cn http://www.morning.rfxg.cn.gov.cn.rfxg.cn http://www.morning.qmfhh.cn.gov.cn.qmfhh.cn http://www.morning.gqflj.cn.gov.cn.gqflj.cn http://www.morning.wpydf.cn.gov.cn.wpydf.cn http://www.morning.dwfxl.cn.gov.cn.dwfxl.cn http://www.morning.sfyqs.cn.gov.cn.sfyqs.cn http://www.morning.ghryk.cn.gov.cn.ghryk.cn http://www.morning.nrzkg.cn.gov.cn.nrzkg.cn http://www.morning.ynlpy.cn.gov.cn.ynlpy.cn http://www.morning.pumali.com.gov.cn.pumali.com http://www.morning.jfcbz.cn.gov.cn.jfcbz.cn http://www.morning.ljyqn.cn.gov.cn.ljyqn.cn http://www.morning.bmts.cn.gov.cn.bmts.cn http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn http://www.morning.gxfpk.cn.gov.cn.gxfpk.cn http://www.morning.lwmzp.cn.gov.cn.lwmzp.cn http://www.morning.rrwgh.cn.gov.cn.rrwgh.cn http://www.morning.tqlhn.cn.gov.cn.tqlhn.cn http://www.morning.dpjtn.cn.gov.cn.dpjtn.cn