My big issue with programming in Microsoft Assembly for a subset of architectures that Microsoft supports is...
You're programming for a subset of architectures that even Microsoft supports. Windows 8 moves beyond x86 (32 bit) / amd64 (compatible with x86 -- also called x86_64) / ia64 (not compatible with x86). It brings in ARM support.
So... right now, you have assembly that works with a single operating system and two of the architectures that operating system actually supports.
I'll repeat what others have said. Have you looked at C? It was designed because coding the same thing over-and-over in different assembly languages is boring. You can think of it as an assembly macro-language. The famous "++" operator exists simply because there's an assembly code to perform this, and -- without any fancy optimization -- you could get slightly smaller code.
If you write Windows C code you automatically work on all Windows processors. x86, amd64, ia64, arm, with a little planning you should be able to get something that works on Windows phones. (Are any of those still using SuperH or has everything moved to Arm?)
Secondly, if you really have a thing for assembly programming, (1) get a copy of FreeDOS, (2) install it to a freely available virtual machine, (3) write assembly code specifically for the VM. You can then share your code as a virtual machine. (A virtual machine that could use a floppy disk image. I didn't say it would need to be large.)
Why start with FreeDOS? You want to write a Roguelike game and not an operating system. FreeDOS gives you a compatible filesystem and some other handy functions.
Cheers,
Steven Black