Exercise 1: Why Multiple Addressing Modes Are Needed — Possible Solution ==================================================================== THE CORE PROBLEM ------------------------------ Per the chapter's own "Why Instructions Can't Just Hold a Full Address" section, every LC-3 instruction is exactly 16 bits wide, and a chunk of those bits is already spent on the opcode and other bookkeeping (like a destination register). That leaves nowhere near enough room to also embed a full, standalone 16-bit address inside a single instruction. WHY ONE UNIVERSAL "FULL ADDRESS" FORMAT WON'T WORK ------------------------------ If LC-3 tried to have one instruction format that always stored a complete 16-bit address, that address field alone would consume the ENTIRE 16-bit instruction, leaving zero bits left over for the opcode (which operation is this?), the destination register (where does the result go?), or anything else. There would be no way to tell one instruction apart from another, and no room to say what to actually DO with that address. WHY MULTIPLE MODES SOLVE IT ------------------------------ Instead of forcing every instruction to carry a full address, different addressing modes let an instruction carry something much smaller -- a small offset, or nothing at all -- and have the CPU COMPUTE the real address using that smaller piece of information plus something it already knows (the current PC, or a register's current value). Immediate mode avoids the problem entirely by not needing an address at all; PC-relative and indirect modes use a small 9-bit offset instead of a full address; base+offset uses an even smaller 6-bit offset combined with whatever a register already holds. Each mode is really just a different, compact way of saying "here's enough information to compute the address, without needing to store the whole thing." WHY THIS WORKS AS AN ANSWER ------------------------------ It restates the actual bit-budget problem from the chapter, explains concretely why a single "always store a full address" format would break (no room left for the opcode or register fields), and explains how the different modes each solve it by computing rather than storing the address.