Hi,
Today, I wrote my first 32-Bit Protected Mode Binary File (abbreviation: 32BPMBF)
However...I wrote the following piece of code:
wllcome db 'Wellcome to the INF0x OS!', 0
and 5-7 instructions after that:
I've the flat mode set up. And guess what happened? Nothing. It did put something in ESI and it was the offset of the wllcome string, for example 206h. But 206h is not the flat memory address, where wllcome stands: so I set esi to a base value of 0x100000 (1 MB mark) and added the wllcome offset to it. Guess what? It worked!
I'm talking about that, because of your linker problems: When you want to link something correctly, be sure you specify the right address. The Linker can't put the universal addressing code just because you didn't specified where the code would be running. 206h in the previous example is totally wrong, but if the linker knows you're talking about 206h offset from 0x100000....that's another thing
Now, on the question: Linking several files. Let me tell you, how I linked my .asm files (I'm using nASM)...I used '%include ....' and it worked. What happened exactly? nASM put the code of the include file, exactly where the line "%include ..." stays.
Why don't you try to include these files you're talking about, so the linker will have only one file to work on?
Sorry, if I misunderstand somethnig, or if I'm not correct!