汇编语言是一种常用的中级编程语言,用于微处理器编程。宏和过程是汇编语言中的两个概念,通过它们可以实现模块化编程。现在让我们来了解一下宏和过程是如何相互区别的。

宏是一组指令,程序员可以通过使用它的名字在程序的任何地方使用它。它主要用于实现模块化编程。因此,在宏的帮助下,同一组指令可以被多次使用。无论在哪里使用宏的标识符,它都会在编译过程中被实际定义的指令所取代,因此不会发生调用和返回。

宏的语法:

%macro macro_name number_of_parameters

%endmacro

程序

程序也像宏一样,但它们用于大的指令集,而宏用于小的指令集。它包含一组执行特定任务的指令。它包含三个主要部分,即识别程序的程序名、包含一系列指令的程序体和表示返回语句的RET语句。与宏不同,程序遵循调用-返回的方法,从而实现真正的模块化。

程序的语法:

procedure_name :
procedure body
 ….......................
RET

调用程序:

CALL procedure_name

程序执行后,控制权通过RET语句转移到调用程序。

宏和程序的区别:

编号 MACRO 程序
1 宏定义包含一组指令以支持模块化编程。 程序包含一组可以重复调用的指令,可以执行一个特定的任务。
2 宏用于小的指令集,大多少于10条指令。 程序用于大型指令集,大多超过10条指令。
3 在宏的情况下,对内存的要求很高。 如果是程序,对内存的要求就比较低。
4 宏中不需要CALL和RET指令/语句。 在程序中需要CALL和RET指令/语句。
5 汇编指令MACRO用于定义宏,汇编指令ENDM用于表示主体结束。 汇编指令PROC用于定义程序,汇编指令ENDP用于表示主体结束。
6 宏的执行时间较短,因为它的执行速度比过程快。 程序的执行时间较长,因为它的执行速度比宏慢。
7 宏的机器码被多次创建,因为每次调用宏时都会产生机器码。 程序的机器码只创建一次,它只在程序被定义时产生一次。
8 在宏中,参数是作为调用宏的语句的一部分传递的。 在程序中,参数是在寄存器和堆栈的内存位置中传递的。
9 由于没有调用和返回,所以不存在开销时间。 开销时间发生在调用程序和将控制权返回给调用程序的过程中。