1.many functions have to be implemented twice
2.more flexibility is available to the programmer in that he may use all the features of the assembler in conjunction with macros
3.functions are combined and it is not necessary to create intermediate files as output from the macro-processor and input to the assembler.
4. all of these