Por lo general, los parámetros de los procedimientos de bajo nivel se clasifican de acuerdo con la dirección de la transferencia de datos entre el programa que hace la llamada y el procedimiento al cual llamó:
Entrada: un parámetro de entrada son los datos que el programa que hizo la llamada pasa al procedimiento. El procedimiento al que se llamó no debe modificar la variable correspondiente al parámetro y, aún si lo hace, la modificación queda confinada al propio procedimiento.
Salida: un parámetro de salida se crea cuando un programa que llama pasa la dirección de la variable a un procedimiento, el cual utiliza la dirección para localizar y asignar datos a la variable. Por ejemplo, la Biblioteca de consola Win32 tiene una función llamada ReadConsole, la cual lee una cadena de caracteres desde el teclado. El programa que hace la llamada a un procedimiento pasa un apuntador a un búfer de cadena, en el que ReadConsole almacena el texto escrito por el usuario:
.data
bufer BYTE 80 DUP(?)
manejadorEntrada DWORD ?
.code
Entrada-Salida: un parámetro de entrada-salida es idéntico a un parámetro de salida, con una excepción: el procedimiento que se llamó espera que la variable a la que hace referencia el parámetro contenga datos. También se espera que el procedimiento modifique la variable a través del apuntador.