Difficulty: Easy
Correct Answer: All of the above
Explanation:
Introduction / Context:
Assembly language sits one level above machine code, providing human-friendly mnemonics and symbolic features while still mapping closely to hardware instructions. Understanding why assembly is superior to raw opcodes clarifies why assemblers remain useful for embedded systems, boot code, and performance-critical routines.
Given Data / Assumptions:
Concept / Approach:
Assembly introduces symbolic mnemonics (e.g., MOV, ADD) instead of numerical opcodes, labels for addresses, and directives to define constants, reserve storage, and include data. These features reduce cognitive load, cut errors, and improve maintainability without sacrificing control over hardware.
Step-by-Step Solution:
Readability: mnemonics and labels make intent clear (e.g., LOOP_START vs. address 0x1F3A).Symbolic addressing: the assembler resolves labels to absolute addresses, easing relocation and code changes.Data handling: directives (DB, DW, EQU, ORG) and pseudo-ops streamline embedding constants, tables, and buffers.Therefore, all listed benefits apply simultaneously.
Verification / Alternative check:
Practical development flows show fewer errors and faster iteration in assembly compared with entering hex opcodes by hand. Listing files and symbol maps from assemblers demonstrate automatic address resolution.
Why Other Options Are Wrong:
Each single item (a), (b), or (c) is true, but they are incomplete individually.None of the above: incorrect because all items are true and collectively summarize assembly’s advantages.
Common Pitfalls:
Assuming assembly is as hard to maintain as machine code; overlooking that assemblers provide macros, conditional assembly, and structured comments that significantly aid development.
Final Answer:
All of the above
Discussion & Comments