Procedure
Definition of procedure
A procedure is a collection of
instructions to which we can direct
the flow
of our program, and once the execution
of these instructions is over
control is given back to the next
line to process of the code which
called
on the procedure.
Procedures help us to create
legible and easy to modify programs.
At the time of invoking a procedure
the address of the next instruction
of
the program is kept on the stack
so that, once the flow of the
program has
been transferred and the procedure
is done, one can return to the
next line
of the original program, the one
which called the procedure.
Syntax of a Procedure
There are two types of procedures,
the intrasegments, which are found
on
the same segment of instructions,
and the inter-segments which can
be
stored on different memory segments.
When the intrasegment procedures
are used, the value of IP is stored
on the
stack and when the intrasegments
are used the value of CS:IP is
stored.
To divert the flow of a procedure
(calling it), the following directive
is
used:
CALL NameOfTheProcedure
The part which make a procedure
are:
Declaration of the procedure
Code of the procedure
Return directive
Termination of the procedure
For example, if we want a routine
which adds two bytes stored in
AH and AL
each one, and keep the addition
in the BX register:
Adding Proc Near ; Declaration
of the procedure
Mov Bx, 0 ; Content of the procedure
Mov B1, Ah
Mov Ah, 00
Add Bx, Ax
Ret ; Return directive
Add Endp ; End of procedure declaration
On the declaration the first
word, Adding, corresponds to the
name of out
procedure, Proc declares it as
such and the word Near indicates
to the MASM
that the procedure is intrasegment.
The Ret directive loads the IP
address stored on the stack to
return to the original program,
lastly, the Add Endp directive
indicates the end of the procedure.
To declare an inter segment procedure
we substitute the word Near for
the
word FAR.
The calling of this procedure
is done the following way:
Call Adding
Macros offer a greater flexibility
in programming compared to the
procedures, nonetheless, these
last ones will still be used.
Macros
Definition of the macro
A macro is a gro of repetitive
instructions in a program which
are
codified only once and can be
used as many times as necessary.
The main difference between a
macro and a procedure is that
in the macro
the passage of parameters is possible
and in the procedure it is not,
this
is only applicable for the TASM
- there are other programming
languages
which do allow it. At the moment
the macro is executed each parameter
is
substituted by the name or value
specified at the time of the call.
We can say then that a procedure
is an extension of a determined
program,
while the macro is a module with
specific functions which can be
used by
different programs.
Another difference between a
macro and a procedure is the way
of calling
each one, to call a procedure
the use of a directive is required,
on the
other hand the call of macros
is done as if it were an assembler
instruction.
TOP
Syntax of a Macro
The parts which make a macro
are:
Declaration of the macro
Code of the macro
Macro termination directive
The declaration of the macro
is done the following way:
NameMacro MACRO [parameter1,
parameter2...]
Even though we have the functionality
of the parameters it is possible
to
create a macro which does not
need them.
The directive for the termination
of the macro is: ENDM
An example of a macro, to place
the cursor on a determined position
on the
screen is:
Position MACRO Row, Column
PUSH AX
PUSH BX
PUSH DX
MOV AH, 02H
MOV DH, Row
MOV DL, Column
MOV BH, 0
INT 10H
POP DX
POP BX
POP AX
ENDM
To use a macro it is only necessary
to call it by its name, as if
it were
another assembler instruction,
since directives are no longer
necessary as
in the case of the procedures.
Example:
Position 8, 6
Macro Libraries
One of the facilities that the
use of macros offers is the creation
of
libraries, which are groups of
macros which can be included in
a program
from a different file.
The creation of these libraries
is very simple, we only have to
write a
file with all the macros which
will be needed and save it as
a text file.
To call these macros it is only
necessary to use the following
instruction
Include NameOfTheFile, on the
part of our program where we would
normally
write the macros, this is, at
the beginning of our program,
before the
declaration of the memory model.
The macros file was saved with
the name of MACROS.TXT, the
instruction Include would be used
the following way:
;Beginning of the program
Include MACROS.TXT
.MODEL SMALL
.DATA
;The data goes here
.CODE
Beginning:
;The code of the program is inserted
here
.STACK
;The stack is defined
End beginning
;Our program ends
|