Back in the old days, assembly languages were intended for use by human programmers, and they were more sophisticated than those of today, which are really only intended for compiler code generation. Macro assemblers allowed you to write and use macros such as IF, SWITCH, FOR, WHILE, PROC, CALL. Expression-oriented assemblers allowed you to write more than one arithmetic opcode on the same line, using a syntax similar to arithmetic expressions. Try googling "macro assembler" or "high level assembler". Consider adding macros or high level features to the uCISC assembler.