Thanks, Mahmoud!
Mezo40 - Welcome! If your "mystery file" is an .exe format for either dos or Windows, it will begin with "MZ" (4D 5A) signature as the first two bytes. If it is for Windows, this will be followed by a "PE" (50 45) signature at an offset specified by a dword at offset 3Ch. It's at offset 70h in the .exe I'm looking at, but it can vary, I think. In this case, you'll probably recognize text in the "dos stub", "this program requires win32", or so. If it doesn't have this "PE", it's probably "bits 16", if it does, probably "bits 32". If it doesn't have "MZ", and appears to start off with code, it could be a .com format - probably "bits 16".
Or it could be something else... an executable for Linux/BSD would begin with 7F 'E' 'L' 'F' - probably "bits 32"...
It is possible for Nasm to switch bitness in mid-file - code that switches from real mode to protected mode, for example. It can be tricky (though it should be possible) to find where the switch (and back?) was done. You don't mention "bits 64" as a possibility - that would add further complication!
If you can identify an instruction that loads an immediate, you can get a clue from the size of the immediate - two bytes for "bits 16", four bytes for "bits 32"... though a 66h prefix before the opcode would reverse that. An eight byte immediate would indicate "bits 64", I guess...
Instead of hex, I sometimes use ndisasm to disassemble the file - trying "-b16", "-b32", or "-b64" to see which "makes sense". Ndisasm will try to disassemble everything in sight, whether it's code or not, so it won't all "make sense" in the best of cases...
You don't say if you're "new" or just "new to the forum". It can take some experience to figure this stuff out! Might as well start getting it, if you need to.
If you can't figure it out, tell us more about what you're seeing. (We don't do "reverse engineering" here, though!)
Best,
Frank