Cargando programas a la RAM y ejecutándolos NASM 16b

Estoy desesperado por una solución a esto. Estoy tratando de desarrollar un código de ensamblaje que me permita cargar y ejecutar (por entrada del usuario) otros 2 programas .exe de Assembly. Estoy teniendo dos problemas:

Parece que no puedo asignar la ruta de acceso a un registro válido (O tal vez sintaxis incorrecta)

Necesito poder ejecutar el otro programa después de que el primero (podría ser cualquiera) haya iniciado su ejecución.

Esto es lo que tengo hasta ahora:

<code>mov ax,cs ; moving code segment to data segment
mov ds,ax

mov ah,1h ; here I read from keyboard
int 21h
mov dl,al

cmp al,'1' ; if 1 jump to LOADRUN1 
JE LOADRUN1 

cmp al,'2' ; if 2 jump to LOADRUN2 
JE LOADRUN2

LOADRUN1:
    MOV AH,4BH
    MOV AL,00
    LEA DX,[PROGNAME1] ; Not sure if it works
    INT 21H


LOADRUN2:
    MOV AH,4BH
    MOV AL,00
    LEA DX,[PROGNAME2] ; Not sure if it works
    INT 21H

; Here I define the bytes containing the pathnames
PROGNAME1 db 'C:\Users\Usuario\NASM\Adding.exe',0 
PROGNAME2 db 'C:\Users\Usuario\NASM\Substracting.exe',0
</code>

Simplemente no sé cómo iniciar otro programa ingresando el programa 'padre', después de que uno ya se está ejecutando.

¡Gracias de antemano por tu ayuda! Cualquier información adicional estaré más que feliz de proporcionar.

No es una superposición.Estoy usando NASM 16 bits, Windows 7 32 bits.

Respuestas a la pregunta(2)

Su respuesta a la pregunta