: I began learning 16-bit ASM and practice 16-bit ASM programming under DOS and MASM 6.x three weeks ago. I am very impressed with ASM and the control and simplicity ASM brings to programming. 16-bit ASM is so simple. Programmers have the most flexibility in terms of program design. I enjoy ASM programming and will definitely continue learning and practicing 16-bit ASM.
: As I mentioned before I am learning 16-bit ASM, not 32-bit ASM. The author of the ASM book for which I am studying from emphasizes that 32-bit ASM is not as important or as practical as 16-bit ASM. One key reason is the presence of high-level languages including C/C++, making 32-bit Windows and Linux programming much easier and quicker. I definitely agree. Yes, 32-bit ASM is powerful and gives you unparalleled control, but at the cost of design, implemetation, and debugging time.
: Software technology changes so rapidly. Consider Microsoft's C#. Companies are in a race to design overly simple and extremely easy, at a cost of control limitation, programming languages. I would like to know what is the future of Assembly language and 16-bit, 32-bit, and soon 64-bit ASM programming? I am most interested in 16-bit ASM because, again, 32-bit and 64-bit ASM programming in Windows and Linux is really not worth the time and effort except for specific reasons such as hardware control.
While I'm probably (okay, there's hardly a probably about it) not qualified to make this sort of evaluation, in my opinion, 16-bit x86 assembly has been dead for practical code. 32-bit won't be going anyway anytime soon, and 64-bit will/has come but it's not really a desktop solution at this point (obviously if you are targetting high-end servers then this statement is pointless, however, if you are targetting high-end servers then hopefully you know what you are doing and can make your own judgement).
Part of your argument doesn't make sense. There are C/C++ compilers for 16-bit architectures, there have been high-level languages since the 50's (and not inadequate ones either, FORTRAN, the first, and LISP, a very early HLL are very alive and well) and definitely when people used the 8088 (an 8-bit processor). I don't really see how you can consider 32-bit/64-bit Windows/Linux 'not worth the time and effort' but you see 16-bit as worth it.
For application code there is very little reason any of the code should be in assembly. About the only time you'd want assembly in application level code is when you are tightening a hotspot.
"We can't do nothing and think someone else will make it right."
-Kyoto Now, Bad Religion