Thank you very much for the suggestion. I didn't know about 'rel' (I'm new to NASM), and I will most definitely try it as soon as I return to the office.
Regarding the rest of your reply, I guess I should elaborate. Yes, I'm aware I can't obtain the exact same binary with MASM and NASM, but it's a worthy goal because if I could, that would mean porting the code is successful and I don't even need to test. So I use DUMPBIN to compare binaries, eliminating from the output all irrelevant things such as date and time, checksum, debug sections and so on.
If the content of code and data sections are identical, I can with high confidence tell my boss 'it's done' and submit to test, right?
Regarding relocations, I believe this can be controlled from the assembler (whether an instruction is subject to relocation or not), and you most definitely want all relocations to be the same regardless of the assembler. Beside, the output of NASM is an object, and I use the same linker afterward, so the linker is out of the equation.