A section of a program that carries out some well-defined operation on data specified by parameters. It can be called from anywhere in a program, and different parameters can be provided for each call.
The term procedure is generally used in the context of high-level languages; in assembly language the word subroutine is more commonly employed.