DEFASM: a Microprogram Meta-assembler With Semantic Capability