I want to rant...
assembler was illegal, immoral, fattening, rotted your sox and gave you zits
I fully support you, of course, also by demonstrating that projects in the +10k lines range can be done (
A guide to the RichMasm editor) :P
However, it's not that clear-cut:
Writing projects in VGGs is easy and produces, well, garbage.
Writing pure assembler is fun but produces, well,
very small executables

The highest productivity comes, IMHO, with
macros and a good library. Example:
Dim My$()
Let My$(1)=Input$("What's your hobby? ", "assembler programming")
Let My$(0)="You entered ["+My$(1)+"]"
Print My$(0)
Same as 44 lines of pure assembler:
push 0 ; ÚArg2 = 0
push 5 ; ³Arg1 = 5
call MbArrayDim ; ÀSkelMbEmpty.MbArrayDim
mov dword ptr [MbErrLine], 0B
push 1
push 5
call MbArrayGet
push offset ra_lbl2 ; ASCII "assembler programming"
push offset ra_lbl3 ; ASCII "What's your hobby? "
pushad
fxsave [MbXs]
mov eax, 4E4
push eax
push eax
call SetConsoleCP ; Jump to kernel32.SetConsoleCP
call SetConsoleOutputCP ; Jump to kernel32.SetConsoleOutputCP
fxrstor [MbXs]
popad
call MbInputStrP ; ÀSkelMbEmpty.MbInputStrP
mov dword ptr [MbErrLine], 0B
push 7F
push 80000001
call MbPrint
mov dword ptr [MbErrLine], 0C
push 0
push 5
call MbArrayGet
mov dword ptr [MbErrLine], 0C
push 1
push 5
call MbArrayGet
mov dword ptr [MbErrLine], 0C
push offset MbLs1 ; ASCII "You entered ["
push 7F
push offset MbLs2
push 80000003
call MbPrint
mov dword ptr [MbErrLine], 0D
push 0
push 5
call MbArrayGet
push 7F
push 1
call MbPrint
Now, one interesting observation is that it would look only marginally more orderly in C/C++ 8)
Like Hutch with PowerBasic, I grew up with GfaBasic, and have written fairly big projects in that language (a mix of Basic and Pascal, I've been told). Not all Basic dialects are decent programming languages, many are crappy, and standardisation is lacking.
But some are damn good, PowerBasic for example. GfaBasic was top in the 16-bit era, but they failed to port it, that's why
I had to do that ;-)
In the process of doing so in MASM, I also was more or less obliged to touch C - header files etc. Some here in the forum (mainly Erol) pushed me to look at
Pelles C, which is a decent programming environment. But overall, for somebody used to simple Basic, C/C++ is torture and a can of worms. It is more difficult than assembler, and the result is Bloat without the Power. Try a C equivalent to the code posted above...
Plus, launching that behemoth of Visual Studio gives me the creeps - in the time that it takes to start it, to create a new project and to "configure" it, I would have already coded the entire source in MasmBasic, in a single file instead of a dozen "modules" spread all over the place.
MasmBasic is my personal thing, but for those who prefer another syntax: Check out the \Masm32\help\ folder, in particular hlhelp.chm and masmlib.chm - as Hutch wrote above, the Masm32 library pushed assembly back on the scene of serious programming.
Of course, pure assembler is good for playing with instructions and learning to move values in registers and memory locations etc - the typical stuff they will teach in a university course on assembler. But for productive work, you
must accept the use of macros. And just in case that you are one of those who believe that macros produce less efficient code: Post an example. One is enough 8)