Is this possible? If it is, how? And if not, which compiler that does allow that do you recommend?
I seem to remember that Visual C 1.52c was the last version that would generate 16-bit code.
There's been quite a bit of water under the bridge since then.
You can probably still pick up Turbo Pascal 3 or Turbo C 2 from the Borland museum - I don't care whether they call themselves Inprise or Enchilada or whatever, they will always be Borland to those who used and loved their products :-)
I'm not sure if DJGPP (based on gcc) will generate 16-bit code. I vaguely recall it comes with a DOS extender which may mean it generates 32-bit code. I may be wrong. There was also something called egcs (from memory) that you may want to look into.
You can also check out OpenWatcom, they appear to do 16-bit DOS among others. Watcom was a respected name alongside Borland back in the day.