OP says: Once this code will be compiled I will replace the 00000000h address by a valid one. The presence of the address in the ASM code is here to keep the same number of opcode once the code is compiled
Then what you probably want to write is:
my_jump:
jmp near ptr $ ; produces a 4 byte long relative jump instruction that jmps-to-self
and when you know the target address which you want it to jump, and have loaded that address in eax, you can code:
mov eax, .... ; desired target address
sub eax, offset my_jump+4 ; compute relative offset for jmp to get to target
mov dword ptr my_jump+1, eax ; update the jump instructio
This should work. It has the disadvantage of being self-modifying code, which may not be allowed under your OS, and if is allowed, is not accepted as good practice.
An easier and better approach is to place the desired target location in a well-known data location, and modify your code to use that:
.data
target_location dword 0 ; filled in later
.code
Suite:
mov esi, 7706304eh ; hardwiring this constant is bad practice, too, but you didn't ask about that
call esi
mov esi, target_location
jmp esi
This code is not self modifying, and this kind of trick in assembler is pretty common.