program must call itself...Help

Calling number setting in Command Line...
please, write me code sample or correct my sample.

.Model small
.Stack
.DATA
filename DB 'D:\--xXx--\DOCument\Assembler\work\bin\4BH.EXE', 0
parameter DB 6, '6', 0dh
def_fcb DB 20 DUP (0)
param_block DW 0
Dw parameter
Dw def_fcb
Dw def_fcb
CurrentParam DB ' ',0Ah, 0Dh,'$'

.CODE
start:
mov ax, @data ;pointer to data segment
mov ds, ax ;put it in ds

mov si,0080h
cmp byte ptr es:[si], 0h
je E10XIT
inc SI
inc SI
cmp byte ptr es:[si],30h
je E10XIT
xor ax, ax
mov AH, BYTE PTR es:[si]

mov CurrentParam[0], ah
lea DX, CurrentParam
mov ah,09h
int 21h
xor ax,ax
mov AH, BYTE PTR es:[si]

sub AH, 1h
lea DX, parameter
xor DI,DI
inc DI
mov parameter[1],AH
xor DI,DI

; before we run a program, we have to resize our own memory
; so that the system have enough memory to run the other program
; we have to fit it to what we only need for our program and release
; the other (memory) to the system. We can compute the size in paragraph
; by using the SS, SP and the PSP. It must be in paragraph (16 bytes)
; and the formula woud be (SS - PSP) + (SP >> 4) + 1.

mov ah, 62h ; get PSP. BX will be set to the PSP.
; ES also has the PSP value at program startup
int 21h
mov ax, sp
mov cl, 4
shr ax, cl
inc ax ; add 1 just to make sure it's enough since other
; data may have been pushed to the stack
mov cx, ss
add ax, cx
sub ax, bx

mov es, bx ; now resize it.
mov bx, ax
mov ah, 4Ah
int 21h

mov ax, 4b00h ; and execute the program
mov dx, Offset filename
push ds
pop es
mov bx, Offset param_block
int 21h

E10XIT:
mov ax, 4c00h
int 21h

end start
[2086 byte] By [winPerec] at [2007-11-20 7:29:31]