宏指令能够在程序中扩展成代码,这对一些重复性比较高的代码段,能起到简化源程序的作用。
汇编中使用宏指令的过程如下:
1.定义。
宏指令的定义格式为:
宏指令名 macro [形参1,形参2...]
......
......(宏内容)
endm
2.宏指令的调用。
宏指令的调用格式:
宏指令名 [形参1,形参2....]
3.宏指令的展开。
在代码中,调用宏指令的地方,会在程序编译的时候根据给定参数自动替换成宏指令的内容。
需要注意一下几点:
(1)宏指令的参数可有可无。
(2)宏指令的定义必须在调用之前。
(3)宏指令的名字遵循标识符的命名规范。
下面就用一个小小的例子来看一下宏指令在汇编中的应用。
assume cs:code
;定义一个宏指令,利用R1交换R2,R3的值
swap macro R1,R2,R3
mov R1,R2
mov R2,R3
mov R3,R1
endm
code segment
start:
mov bx , 1234H
mov dx , 5678H
swap ax, bx , dx ;调用宏指令
mov ax , 4C00H
int 21h
code ends
end start
在debug下看一下段代码在运行的时候实际是什么样子的,可以看到
......
mov dx , 5678
mov ax, bx
mov bx ,dx
mov dx ,ax
mov ax , 4c00
........
很直观的就能看到宏的使用过程了,他将调用宏指令的地方,都替换成了相应的宏内容了,当然,还要给定正确的参数。
这样,我们对汇编中宏指令的用法和作用也有了一个初步的了解了。在应用中,灵活使用宏会大大简化重复代码的编写,也是你的源代码成功的“瘦身”。
=====================================================
0o别让理想压弯了脊背o0
- [游客] 补充一下,还有可能在数据段中定义数组时超过了一个段长 07/22 16:20
- [infosecer] 受教了 07/17 00:16
- [游客] 顶一下。 05/06 19:00
- [maxm] 收藏了先 02/17 15:50
- [jcw2008] 谢谢,这对我很有用! 10/21 11:05
- [ding2843] 好文章。。。。。。。。。。。。。。。。。 07/01 16:39
- [ding2843] 好文章。。。。。。。。 07/01 16:22
- [starrynight] 一笑而过 管自己的水,让别人喝去吧 06/27 13:25
- [游客] "别理他"那可不行,不能让不实之言,任意泛滥。 知情人应该发言,不要让“谣言”有成长的空间。 06/27 12:55
- [yjll] 顶! 06/26 13:31
- [lonely200808] 你好!我的汇编语言的初学者,在论坛里看到你发言,想和你交个朋友,因为我才开始自学,要自考,有没有QQ 03/26 17:19
- [gecko] 接触到汇编语言是一年后的事情了。才知到有一种语言更低级。 这话有双关语的感觉..哈哈 11/21 19:42
- [lbhn] 我已修改了,这东西不注意还真不好找*-* 10/18 16:04
- [lbhn] 多谢了,对了问一下你的照片是怎么上传的?为什么我现在连自己的资料都不能修改了? 10/17 18:28
- [lbhn] 我第二天又做了一遍这次没出错,可能是V86运行程序不是很稳定,多谢你关注啊!! 10/15 16:22
- [lbhn] 你是在纯DOS下还是ms-dos窗口下?是自已的机子吗? 我这是在网吧里做的!! 10/13 13:50