specifies that the procedure is a standard procedure
function.
type
specifies that the procedure is near or far. If no
type is specified, the assembler assumes near regardless
of the selected CPU mode (segmented or non-segmented). The
assembler uses the procedure type to automatically generate the
appropriate CALL and RET instructions.
PROC TASK
specifies that the procedure is a TGROUP task procedure. A
TGROUP task is a unit with one or more modules. The entry point
to the task is the task procedure and the exit point from the
task is a RETI instruction contained in the task
procedure. A task is a unit that performs a certain function. It
is activated by a software or hardware trap that causes an
interrupt and that branches to the task procedure using an entry
in the interrupt vector table.
taskname
specifies the TGROUP for the task procedure. If no
taskname is specified, an unnamed task procedure is
created. The taskname must be unique and, if specified,
intname and its value are GLOBAL symbols.
intname
specifies a unique symbolic name for the interrupt vector of
the task procedure or interrupt procedure. If the intname
is not assigned an intno, the interrupt or vector number
is relocatable and may be supplied by the linker.
For task procedures, the symbolic trap number activates tasks
through a trap instruction which has a trap number as its
operand. The trap name is known automatically system-wide.
intno
specifies a numeric expression that evaluates to a constant
value from 0-127 which represents the interrupt number of the
interrupt procedure. The intno is assigned to
intname (if specified).
PROC INTERRUPT
specifies that the procedure is an interrupt service
routine.
USING
specifies the register bank that the procedure uses.
regbank
specifies the name of a register bank that has been
previously defined with the REGBANK directive.
Procedures must include a RET instruction which the
assembler converts into one of the following machine return
instructions:
RETS: Return from far procedure.
RETI: Return from interrupt procedure.
RET: Return from near procedure.
Procedures defined with the PROC statement must be
terminated by the ENDP statement.
Note
Unlike procedures and functions created in high-level languages
(like C and C++), identifier scope in assembly language is
module-wide. For this reason, identifiers used in assembly
procedures must be unique.
Procedures defined with the PROC statement may be called
from within the same code segment (a near call) or may be called
from a different code segment (a far call). They may be created as
either near or far procedures (specified by the type).
The assembler does not verify whether or not a return
instruction was used in a procedure. This is the responsibility of
the programmer.
This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.
ARM websites use two types of cookie: (1) those that enable the site to function and perform as required; and (2) analytical cookies which anonymously track visitors only while using the site. If you are not happy with this use of these cookies please review our Privacy Policy to learn how they can be disabled. By disabling cookies some features of the site will not work.