How does a microoperation differ from a regular assembly language instruction? Explain the steps of the fetch–decode–execute cycle. How does interrupt-driven I/O work? Explain how an assembler works, including how it generates the symbol table, what it does with source and object code, and how it handles labels.