Why can't we compile 8086 Assembily for all OSs from any OS?
Porting to a different operating system is about a lot more than the particular assembly language you use.  Different operating systems have different system calls, different libraries, and different APIs, and converting from one to another is usually not something that can be done in an automated way -- even if both used exactly the same assembly language.  Most programs do need to access the filesystem, the network, display things on the screen, and so forth, and all of those require interaction with the OS and libraries.