This has been done with abandoned games to fix bugs and compatibility issues, ex. Forgotten Empires (the mod)[1]
ASM code can also be ported between platforms (ex. from 16-bit DOS to 64-bit Linux), as long as you replace OS-specific calls, interrupts, IO access, etc., although the effort will be greater.
People should stop pretending that a compiled binary is a black box, because it isn't.
Still, the point that Windows makes backwards-compatibility as straightforward as possible prevails, since the cases where you need to do complicated maneuvers like hacking ASM code to fix compatibility issues are scarce.
I still get amazed that I can play some obscure games designed for Windows 95 and compiled using the DirectX 3 SDK. I can't say the same about Linux since I hadn't been able to recompile without fixing code old open source games, because X kernel version broke Y version of Z framework.