Figure: 1.1 Main Components and Operations of an Assembler TYPES OF ASSEMBLERS AND LOADERS 1) A One-pass Assembler One that performs all its functions by reading the source file once. A Two-Pass Assembler One that reads the source file twice. A Resident Assembler One that is permanently loaded in memory. Typically such an assembler resides in ROM, is very simple (supports only a few directives and no macros, and is a one-pass assembler. A Macro-Assembler: One that supports macros A Cross-Assembler: An assembler that runs on one computer and assembles programs for another. Many cross-assemblers are written in a higher-level language to make them portable. They run on a large machine and produce object code fora small machine. A Meta-Assembler: One that can handle many different instruction sets. A Disassembler: This, in a sense, is the opposite of an assembler. It translates machine code into a source program in assembler language. We shall later discuss (1) and (2) in this course