- 浏览: 1222382 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (883)
- Spring (101)
- Swing (1)
- Mysql (21)
- Js (59)
- Jsp (2)
- Hibernate (19)
- Myeclipse (5)
- SqlServer 2000 (2)
- poi (15)
- Java (70)
- SSH (12)
- Html (47)
- Fusion Charts (1)
- C\C++ (2)
- 汇编 (36)
- Jquery (37)
- Struts2 (6)
- Ubuntu (16)
- powerDesinger (4)
- Jboss (3)
- JAX-RS (13)
- JAXB (5)
- JAX-WS (11)
- JMS (4)
- WebSocket (8)
- PHP (16)
- Flash (1)
- maven (3)
- Oracle (8)
- HttpClient (6)
- sqlserver (19)
- svn (5)
- Tomcat (3)
- Jdbc (3)
- EsayUi (11)
- 微信公众平台 (19)
- IIS (2)
- Freemarker (11)
- Comet (1)
- Spring MVC (85)
- JBoss Seam (3)
- 二维码 (9)
- Spring Security (4)
- Ehcache (3)
- Apache Shiro (7)
- jackson (16)
- JPA (8)
- jcaptcha (2)
- RSA (2)
- Ajax (6)
- 跟我学Shiro (0)
- Spring4 (19)
- 跟我学spring3 (0)
- css (32)
- excel (4)
- Filter (3)
- 微信公众帐号开发教程 (0)
- Android (6)
- log4j (6)
- 淘宝接口 (17)
- 支付集成 (3)
- 单点登录 (3)
- Html5 (27)
- 移动平台前端 (3)
- Linux (44)
- FusionCharts (27)
- Json Jackson Xml (5)
- 方培工作室-微信开发 (0)
- Apache与Tomcat与IIS整合 (10)
- Nginx (17)
- webService (2)
- apache (4)
- lucene (3)
- lodop (2)
- Shiro (3)
- zTree (2)
- ireport (12)
- Servlet3.0 (5)
- 前端美工 (19)
- AngularJS (1)
- C#开发微信门户及应用 (0)
- Shell (3)
- bat脚本 (16)
- Bootstrap (26)
- Less (10)
- photoshop (6)
- Redis (6)
- Mongodb (10)
- MyBatis (3)
- 数据结构 (0)
- 读写分离-主从复制 (0)
- JFinal (0)
- 百度地图api (3)
- hadoop-hbase-hive-spark (3)
- WebStorm (2)
- Quartz (5)
- ios (0)
- Mina (8)
- Android Studio (4)
- Ratchet教程 (0)
- 移动端重构系列 (1)
- cubic-bezier贝塞尔曲线CSS3动画工具 (1)
- nginx+tomcat+memcached集群 (0)
- 集群 (0)
- ZooKeeper (3)
- Dubbo (0)
- vpn (0)
- kafka (0)
- JVM垃圾回收机制 (0)
- 微信小程序 (0)
- Lua (0)
- Hystrix (0)
- Vue.js (0)
- mycat (0)
- Openresty (0)
- springBoot (0)
- 新分类 (0)
- guava (0)
- 大数据 (0)
- Sentinel (0)
最新评论
-
JackMacing:
中文怎么解决?
SpringMVC与iReport(JasperReports) 5.6整合开发实例 -
18335864773:
用pageoffice把.可以实现在线的文档操作.直接转pdf ...
转:使用jasperreport动态生成pdf,excel,html -
linhao0907:
推荐一款轻量开源的支付宝组件:https://github.c ...
关于Alipay支付宝接口(Java版) -
songronghu:
太好了,非常有用,谢谢分享~
Java ConcurrentModificationException 异常分析与解决方案 -
wzwahl36:
http://www.atool.org/json2javab ...
Java下利用Jackson进行JSON解析和序列化
我觉得所谓的模块化有两种: "假模块化" 和 "真模块化".
所谓 "假模块化" 就是通过 include 指令把 *.inc 或 *.asm 文件的文本插入到当前位置.
这样最后还是一个大的 asm 文件, 这适合小型的模块化设计.
所谓 "真模块化" 就是一个或几个源文件先通过 lib.exe 编译成 *.lib 文件, 然后通过 includelib 指令引入使用.
这在 RadASM 环境中可通过建立 LIB Project 工程方便做到. 做大工程应该使用这种方式.
假如通过 Win32 App (no res) 模板建立了并实现了这样一个工程(Test33):
; Test33.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code ;两数求和的函数 sum2 proc v1, v2 mov eax, v1 add eax, v2 ret sum2 endp ;三数求和的函数 sum3 proc v1, v2, v3 mov eax, v1 add eax, v2 add eax, v3 ret sum3 endp ; main proc invoke sum2, 11, 22 PrintDec eax ;33 invoke sum3, 11, 22, 33 PrintDec eax ;66 ret main endp end main
上面程序的 "假模块化" 的实现:
通过: 工程窗口 -> 右键 -> 新建 -> 源文件, 分别建立 num2.asm 和 num3.asm
现在要把整个程序分散一些分别到: Test33.inc、num2.asm、num3.asm
;Test33.inc .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib
;num2.asm .code ;这个 .code 可有可无 ;两数求和的函数 sum2 proc v1, v2 mov eax, v1 add eax, v2 ret sum2 endp
;num3.asm ;三数求和的函数 sum3 proc v1, v2, v3 mov eax, v1 add eax, v2 add eax, v3 ret sum3 endp
;Test33.asm ;这样主程序的代码就非常简单了 include Test33.Inc .code include sum2.asm include sum3.asm ; main proc invoke sum2, 11, 22 PrintDec eax ;33 invoke sum3, 11, 22, 33 PrintDec eax ;66 ret main endp end main
上面程序的 "真模块化" 的实现:
准备把 num2 和 num3 两个函数分别作在两个模块里(其实一个模块可以包含很多东西).
文件 -> 新建工程(LIB Project) -> 随意取名为 sum2(准备实现 sum2 函数) -> 然后默认下去, 代码如下:
; sum2.asm .386 .model flat, stdcall .code sum2 proc v1, v2 mov eax, v1 add eax, v2 ret sum2 endp end ;注意这里只有 end, 模块等待调用, 不能指定入口函数 ;然后执行构建(Alt+Shift+F5), 我们需要的 sum2.lib 已经在刚才建立的工程目录下了 ;同样可以建立并得到 sum3.lib
; sum3.asm .386 .model flat, stdcall .code sum3 proc v1, v2, v3 mov eax, v1 add eax, v2 add eax, v3 ret sum3 endp end
;调用库测试: ;Test33_2.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib ;这里的引入路径可以是全路径, 这里是相对路径 includelib ..\sum2\sum2.lib includelib ..\sum3\sum3.lib ;子程序声明 sum2 proto :dword, :dword sum3 proto :dword, :dword, :dword .code main proc invoke sum2, 11, 22 PrintDec eax ;33 invoke sum3, 11, 22, 33 PrintDec eax ;66 ret main endp end main
;假如把 sum2 proto :dword, :dword sum3 proto :dword, :dword, :dword ;分别写在 sum2.inc 和 sum3.inc, 程序可改为:
; Test33_3.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib include ..\sum2\sum2.Inc include ..\sum3\sum3.Inc includelib ..\sum2\sum2.lib includelib ..\sum3\sum3.lib .code main proc invoke sum2, 11, 22 PrintDec eax ;33 invoke sum3, 11, 22, 33 PrintDec eax ;66 ret main endp end main ;其实把子程序的声明直接写在实现它的 asm 文件里也行, 但那样层次不分明.
发表评论
-
学 Win32 汇编[34] - 宏汇编(1)
2011-12-22 13:25 754从接触 C 语言时, 我就不大喜欢宏; 但为了看懂别人的代码也 ... -
学 Win32 汇编[32] - 子程序进阶
2011-12-20 09:49 693接: 学 Win32 汇编[9]: 子过程中的变量声明 ... -
学 Win32 汇编[31] - 结构与联合
2011-12-20 09:48 541结构和联合分别用 struct、union 定义, 都是 en ... -
学 Win32 汇编[30] - 条件及循环伪指令: .IF、.WHILE、.REPEAT 等
2011-12-20 09:48 2109.IF、.ELSEIF、.ELSE、.ENDIF: 条件伪指令 ... -
学 Win32 汇编[29] - 串指令: MOVS*、CMPS*、SCAS*、LODS*、REP、REPE、REPNE 等
2011-12-20 09:47 1956这里的 "串" 并不单指字符串, 包括所有 ... -
学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
2011-12-20 09:46 1451跳转指令分三类:一、无条件跳转: JMP;二、根据 CX、EC ... -
学 Win32 汇编[27] - 乘除指令: MUL、IMUL、DIV、IDIV
2011-12-19 09:03 1369MUL: 无符号乘 ;影响 OF、CF 标志位 ;指 ... -
学 Win32 汇编[26] - 加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP
2011-12-19 09:02 1452;INC(Increment): 加一;DEC(Decreme ... -
学 Win32 汇编[25] - 符号扩展指令: CBW、CWDE、CDQ、CWD
2011-12-19 09:01 1617CBW、CWDE、CDQ、CWD: 扩展指令 ;CBW ... -
学 Win32 汇编[24] - 移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR、SHLD、SHRD
2011-12-19 09:01 1439SHL、SHR、SAL、SAR: 移位指令 ;SHL( ... -
学 Win32 汇编[23] - 位测试与位扫描指令: BT、BTC、BTR、BTS、BSF、BSR
2011-12-19 09:00 2120BT、BTS、BTR、BTC: 位测试指令 ;BT(B ... -
学 Win32 汇编[22] - 逻辑运算指令: AND、OR、XOR、NOT、TEST
2011-12-14 13:23 1306AND: 逻辑与 ;该指令会置 CF=OF=0; 其结 ... -
学 Win32 汇编[21] - 传送指令: MOV、LEA、XCHG、XLATB、XLAT、MOVZX、MOVSX
2011-12-14 13:22 1101汇编指令的一般性要求: 1、两个操作数的尺寸必须一致; 2、操 ... -
学 Win32 汇编[20]: 洞察标志寄存器
2011-12-14 13:21 64215 14 13 12 11 10 9 8 7 6 ... -
学 Win32 汇编[19]: 查看二进制等相关函数
2011-12-14 13:20 591在 masm32.inc 中有这样几个函数的声明: by ... -
学 Win32 汇编[18]: 关于压栈(PUSH)与出栈(POP) 之二
2011-12-13 14:28 1009由于 "栈" 是由高到低使用的, 所以新压 ... -
学 Win32 汇编[17]: 关于压栈(PUSH)与出栈(POP) 之一
2011-12-13 14:27 1058记得刚学多线程的时候, 碰到一个结构: //Delphi ... -
学 Win32 汇编[16]: 常用寄存器的常规功能
2011-12-13 14:26 760通用寄存器 EAX ... -
学 Win32 汇编[15]: LOOP 与标号
2011-12-13 14:25 815Loop 是反复执行;从哪反复? 这要用到 "标号& ... -
学 Win32 汇编[14]: 使用中括号 []
2011-12-12 13:24 736[地址] 是取地址指向的内容: ; Test14_1.as ...
相关推荐
本篇文章将深入探讨如何使用Win32汇编语言编写一个简单的俄罗斯方块小游戏,以此来展示汇编语言的强大功能和灵活性。 首先,让我们了解Win32汇编的基本概念。Win32汇编是针对Windows操作系统API(应用程序接口)...
本文将深入探讨Win32 EXE反汇编的基础知识,以及常用的工具体验。 1. Win32 EXE基础知识 Win32 EXE文件是基于Windows API构建的32位应用程序,它们遵循PE(Portable Executable)文件格式。PE文件包含程序的代码、...
在“win32位汇编的源代码”这个主题中,我们主要探讨的是针对Windows 32位操作系统设计的汇编语言程序。罗云彬的第二版源代码可能是一个教程或者示例集,旨在帮助学习者理解和掌握如何编写32位Windows平台的汇编程序...
《WIN32汇编 17.动态链接库》是一本深入探讨Windows 32位汇编语言中动态链接库(Dynamic Link Library, DLL)技术的专业教程。在Windows操作系统环境下,DLL是实现代码共享、资源复用的重要机制,对于程序开发而言...
例如,yasm支持宏指令和模块化编程,这使得复杂的代码结构变得易于管理和维护。此外,yasm还支持NASM和TASM的语法,兼容性极佳,使得迁移成本降低。 在x86平台上,yasm-1.2.0-win32.exe的性能表现优秀,能有效地将...
3. **程序结构**:书中可能涉及程序的结构设计,如函数定义、模块化编程和子程序调用,以及如何使用汇编语言实现过程和函数。 4. **内存管理**:汇编语言直接操作内存,所以会详细讲解内存分配、释放、栈和堆的使用...
《Windows环境下32位汇编语言》是一部深入探讨在Windows操作系统下使用32位汇编语言编程的专业资料。其中包含了MASM32 V10,这是一个功能强大的Microsoft Macro Assembler的版本,专为32位Windows环境设计。汇编语言...
本文将深入探讨一个基于Win32 API实现的万年历程序,分析其功能特点、设计思路以及技术实现。 首先,Win32 API是微软Windows操作系统提供的一套底层接口,它为开发者提供了丰富的功能,包括窗口管理、图形绘制、...
本篇文章将详细探讨如何在Win32汇编语言环境中实现通用对话框的使用。 首先,通用对话框是由Windows API提供的,它允许开发者在不编写大量自定义代码的情况下,快速集成常见用户界面功能。这些对话框包括打开文件、...
MASM支持宏指令,使得代码复用和模块化编程变得可能。在64位系统中,MASM 6.15及以上版本支持x64架构,可以生成适用于64位Windows的程序。 3. **LINK**: 链接器是将由汇编器生成的.obj文件与其他库文件合并,创建可...
总结,Yasm_v0.72是一款强大的Win32平台汇编器,它以其模块化、高性能和兼容性,为开发者提供了编写和编译底层代码的强大工具。尤其在编译像TrueCrypt这样的复杂软件时,Yasm的重要性不言而喻。了解并熟练掌握Yasm,...
Yasm的强大之处在于它的模块化设计和宏支持,使得代码复用和维护变得更加容易。 五、调试与优化 由于Yasm与Visual Studio的集成,我们可以在VS的调试环境中直接调试汇编代码,查看寄存器状态,单步执行,设置断点...
RadASM是一款针对Win32汇编语言编程的集成开发环境(IDE),版本2.2.2提供了强大的功能,是汇编程序员的理想选择。它专为那些热衷于底层编程、系统级优化或对计算机硬件有深刻理解的开发者设计。下面我们将详细探讨...
1. **图形化编程界面**:STEP7-MicroWIN简化版采用直观的图形化界面,用户可以通过拖拽图标来构建梯形图,降低编程难度。 2. **项目管理**:软件提供了完善的项目管理功能,用户可以创建、保存和管理多个项目,方便...
此外,本书还介绍了浮点运算指令,并通过对比32位段汇编与DOS 16位段汇编,引导读者进入WIN32编程的世界,为开发更广泛的应用程序打下基础。 ### 第7章 调试与运行 最后一章全面介绍了在DOS和Windows环境下调试、...
《S7-200 PLC编程设计与案例分析》这一主题深入探讨了S7-200可编程逻辑控制器(PLC)的编程方法、设计思路以及实际应用案例,为工业自动化领域的工程师提供了宝贵的理论与实践指导。S7-200系列PLC是由西门子公司开发的...