RobiBobi 0 Newbie Poster

I'm trying to code a VERY simple PE compiler/assembler that uses calls to the Win32 API, but I can't work out from the documentation what memory model a loaded PE "sees". It seems to be flat, but in that case how does the OS/processor handle near (16 bit) jmp/call instructions? Does it somehow use the 16 bit value as an offset instead of an VA?

Also if I wanted to access the actual base load address that the image has been loaded to, could I place an RVA as data at an address in a data section and instruct the loader to fix the value at that address?

Thanx!