分享
 
 
 

宏汇编程序

王朝百科·作者佚名  2010-02-26
窄屏简体版  字體: |||超大  

宏汇编程序-MASM 汇编( Assemble )就是把用汇编语言编写的源程序翻译(汇编)成机器语言的目标程序。其基本工具是汇编程序。可使用小汇编程序( ASM ), 也可以使用微软公司产品宏汇编程序(MASM )。实验推荐使用宏汇编程序,因为它不但可以代替 ASM ,而且可以汇编具有宏定义的汇编程序。

宏意思是源程序中的一段有独立功能的程序代码

宏指令,用户自定义的指令。编程序时候,将多次使用的功能用一条宏指令来代替。

汇编包括指令 ,伪指令,宏指令。前两个都是规定的,最后一个是你自己设计的。

好处是用起来方便,::))定义就是为了使用,但是要先定义,后调用。

(这一点和子程序可是不一样啊)

例如,宏定义,两个字相乘

multiply MACRO opr1, opr2, result

push dx

push ax

mov ax,opr1

imul opr2

mov result, ax

pop ax

pop dx

ENDM

调用这个宏,

multiply cx, var, xyz[bx]

宏展开

1 push dx

1 push ax

1 mov ax, cx

1 imul var (var不能使立即数)

1 mov xyz[bx], ax

1 pop ax

1 pop dx

(就是带进去,看明白了吧,注意一点,必须保证展看后有效)

例如,求绝对值

宏定义,

absol MACRO oper

LOCAL next

cmp oper, 0 (和0比较)

jge next

neg oper (求补,就是求绝对值了)

next: (防止多次存入一个地址)

ENDM

宏调用,

.........

absol var

.......

absol bx

宏展开,

1 cmp var,0

1 jge ??0000

1 neg var

1 ??0000:

..........

1 cmp bx, 0

1 jge ??0001

1 neg bx

1??0001:

(很清楚把,就像是你做好了一个公式,然后带入就是了,

汇编学到这里才觉得有趣:))

&使用

例如宏定义,

leap macro cond, lab

j&cond lab

endm

宏调用

leap z, there

.........

leap nz, here

宏展开,

1 jz there

.........

1 jnz here

(明白了吧,就是and,合起来的意思,没有什么好讲的,)

在举一个例子

msg macro lab, num, xyz

lab&num db 'WELCOEME YOU STUDY WITH JINZHOU MR,&xyz'

endm

宏调用

msg ary, 1, wang (这个地方不用注释吧,就是调用两次:)

......

msg ary, 2, zhang

宏展开

1 ary1 db 'WELCOEME YOU STUDY WITH JINZHOU MR wang'

.......

1 ary2 db 'WELCOEME YOU STUDY WITH JINZHOU MR zhang'

(特别简单吧,很好玩吧,)

%用法

例如,

宏定义,

msg macro count, string

msg&count db string

endm

errmsg macro text

cntr = cntr + 1

msg %cntr, text

endm

宏调用

entr=0

....

errmsg 'SYNTAX ERROR'

.......

errmsg 'INVALID OPERAND'

宏展开

1 cntr = cntr + 1

1 msg %cntr, 'SYNTAX ERROR'

2 msg1 db 'SYNTAX ERROR'

...........

1 cntr = cntr + 1

1 msg %cntr, 'INVALID OPERAND'

2 msg1 db 'INVALID OPERAND'

(看出来了吧,就是代替,一般只能看到2所显示的,为了清楚理解,

把1也写出来了)

宏库的建立与调用,(一般以mac后缀)

建立宏库,很简单,遍上号码,变成一个程序就是了

入 MACRO.MAC macro1 MACRO

........

ENDM

..... macro2 MACRO

.........

ENDM

.......

(想用多少用多少)

调用,

方式include加上 路径

不举例子了,很简单。

简单说一下宏调用和子程序的区别:

子程序在程序执行期间调用,只占用自身大小的一段空间。

(必须到子程序的IP,好处是节省内存,效率高,

但是因为要保存返回地址,转向地址,时间长,适合长代码,

频繁调用的)

宏调用,在汇编期间被展开,调用一次展开一次。

注:可能有失误之处,请大家指出,另外这是学习的记录

文章引用自:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有