当前位置首页 > 百科资料> 正文

宏汇编程序

2022-07-14 22:03:15 百科资料

宏汇编程序-MASM 汇编( Assemble )就是把用汇编语言编写的源程序翻译(汇编)成机器语言的目标程序。

简介

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

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

  使用宏指令需先定义,后调用。(这一点和子程序可是不一样啊)

  宏定义是用一组伪操作来实现的,其格式如下:

  宏指令名   MACRO<形式参量表>

  ......

  ENDM

  MACRO和ENDM是一对伪操作,在这对伪操作之间是宏定义体。调用时使用‘宏指令名’来调用该宏定义。‘宏指令名’由程序设计者给定,必须以字母开头。参量表也由程序设计者给定。

  例如,宏定义,求两个字节型变量的乘积,结果为字型

  multiply MACRO opr1, opr2, result   ;其中multiply为宏定义名,opr为两个乘数,result为结果

  push dx

  push ax

  mov ax,opr1

  imul opr2

  mov result, ax

  pop ax

  pop dx

  ENDM         ;宏定义到此结束

  DATA  SEGMENT

  XX    ​DB    ​4EH   ;定义XX

  YY    ​DB    ​8AH   ;定义YY

  ZZ    ​DW    ​?

  DATA    ​ENDS

  CODE    ​SEGMENT

  ASSUME    ​CS:CODE,DS:DATA

  START:    ​MOV    ​AX,DATA

  MOV    ​DS,AX

  MULTY    ​XX,YY,ZZ      ;宏调用,用实参代替虚参

  MOV    ​AX,4C00H

  INT    ​21H

  CODE    ​ENDS

  END    ​START

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

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

  例如 MACRO.MAC macro1 MACRO

  ........

  ENDM

  ...... macro2 MACRO

  .........

  ENDM

  .......

  (想用多少用多少)

  调用,方式include加上 路径

  不举例子了,很简单。

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

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

  (必须到子程序的IP,好处是节省内存,效率高,但是因为要保存返回地址,转向地址,时间长,适合长代码,频繁调用的)

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

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

  更改者注:感觉原来的作者写的有些乱,刚学的时候都没看懂,所以后来做了部分删减和修改。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net