Lo anterior fue la parte Pascal. Lo mismo tiene un equivalente en ASM, que en parte es lo que explicó Googol (el retorno) y queda la invocación de un programa externo desde el tuyo, que se hace así:
*** ATENCION: Se supone que el programa es un .COM ***
PathYfile DB "c:\dir.exe",0
Parameter DB "/p",0
ParameterBlock DB 14 DUP(0)
oldSS DW 0
oldSP DW 0
...
mov AX, SS
mov oldSS, AX
mov AX, SP
mov oldSP, AX ; Ya sé que en un .COM se trabaja con un único segmento, pero si
; lo quieren hace en un .EXE es mejor que recuerden hacer esto!!!
mov WORD PTR [parameterBlock], 0 ; Segmento de los Strings del entorno
mov DX, OFFSET PathYfile ; DS:DX apuntan al nombre y path del programa
mov BX, OFFSET ParameterBlock ; ES:BX apuntan al bloque de parámetros
mov AX, CS
mov WORD PTR [ParameterBlock + 2], AX ; Segmento del command line
mov WORD PTR [ParameterBlock + 4], OFFSET Parameter ; Offset del command line
mov [ParameterBlock + 6], AX ; Segmento del FCB primario
mov WORD PTR [ParameterBlock + 8], 5Ch ; Offset del FCB primario
mov [ParameterBlock + Ah], AX ; Segmento del FCB secundario
mov WORD PTR [ParameterBlock + Ch], 6Ch ; Offset del FCB secundario
mov AX, 4B00h
Int 21h
(sigue...)