masm汇编之——过程与宏的区别
来源:互联网 发布:广西干部网络培训平台 编辑:程序博客网 时间:2024/06/07 22:47
定义方法
宏格式:
宏指令名 MACRO 形参 · · · (宏定义体) ENDM
调用 宏名[形参]
作用:MASM.EXE会将调用到宏的地方用宏定义体完全替换。定义宏的地方不会生成机器码。
过程格式:
过程名 PROC [NEAR/FAR] · · · RET · · ·过程名 ENDP
调用:call 过程名
注:过程不能传递参数
作用:定义过程的地方会生成机器码。
来个实例
拿9号功能调用来做一个对比。
9号功能调用
作用>
输出一串字符
实例>
a.asm
;9号功能调用演示data segment str db "this is a string.$"data endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds,ax lea dx,str mov ah,9 int 21h mov ah,4ch int 21hcode ends end start
执行结果
a.EXEthis is a string.
定义一个打印字符的过程
;函数data segment str1 db "this is str1$" str2 db 0ah, 0dh, "this is str2$" str3 db 0ah, 0dh, "this is str3$"data endscode segmentassume cs:code, ds:datastart: mov ax, data mov ds, ax lea dx, str1 call printf lea dx, str2 call printf lea dx, str3 call printf mov ah, 4ch int 21hprintf proc mov ah, 9 int 21h retprintf endp code ends end start
定义一个打印的宏
;宏printf macro x lea dx, x mov ah, 9 int 21h endm data segment str1 db "this is str1$" str2 db 0ah, 0dh, "this is str2$" str3 db 0ah, 0dh, "this is str3$"data endscode segmentassume cs:code, ds:datastart: mov ax, data mov ds, ax printf str1 printf str2 printf str3 mov ah, 4ch int 21hcode ends end start
区别
汇编代码
很明显,使用宏要比使用过程简洁的多。
但实际上:
生成的可执行文件:宏>过程
由于宏在每次使用时先替换,再生成机器码。
而过程生成一次机器码,每次使用只是进行跳转
程序运行速度:宏>过程
因为没有跳转,所以宏运行的快。
所以说,宏是一种以空间换时间的做法。
阅读全文
0 0
- masm汇编之——过程与宏的区别
- 宏汇编MASM系统
- MASM中3中文本宏的使用与区别
- 汇编debug与masm命令
- asm基础——nasm和masm的一些区别
- 汇编(六)——汇编语言程序格式及MASM
- 汇编入门:Masm与EditPlus配置
- [Intel汇编-MASM]与或以及乘除
- nasm 与 masm语法区别
- NASM 与 MASM 在函数编写上的区别
- masm masm32 fasm nasm yasm gas的区别与联系
- 各种汇编器masm masm32 fasm nasm yasm gas的区别
- 土法查看 MASM 汇编指令的二进制 ...
- MASM的反反汇编技术
- [Intel汇编-MASM]Debug的使用
- 深入理解预编译,编译,汇编,链接的过程——之汇编
- nasm 与 masm的不同之处
- [Intel汇编-MASM]数据定义与分段程序
- Freemarker生成乱码解决
- localStorage
- 软件测试面试题
- CCF 201312-1 出现次数最多的数 C语言解法
- MySQL外键约束On Delete和On Update的详解
- masm汇编之——过程与宏的区别
- Centos6.5安装Python3.6(和python2共存)
- 可拖拽和带二维码的登录窗口设计效果 -- 一天一个篇文章
- 如何把坐标作为hashmap的key
- Android高效加载大图、多图解决方案,有效避免程序OOM
- Autofac官方文档(七)【解析服务】
- 2017湖湘杯pwn200的wp
- Autofac官方文档(八)【解析服务之传递参数来解析】
- Spring入门-----HelloWorld