The problem involves determining the starting address of each 1 KB memory block in a 4 KB byte-addressable memory. Each block is 1 KB in size. Since the memory is byte-addressable, we focus on how the address lines (IA11–IA0) are utilized to map to the blocks.
1. The memory is divided into four 1 KB blocks. This division implies utilizing two address lines (IA3 and IA4) to select one of the four blocks using a decoder.
2. Each 1 KB block contains \(1024\; bytes\). As each block has its own address space spanning from 0 to 1023, the starting address of the \(i^{th}\) block is \(i \times 1024\), where \(i = 0, 1, 2, 3\).
3. However, notice that the four options provided give a hint towards the structure of address allocation. Analyzing them shows address start points increment by smaller values compared to full 1 KB leaps.
4. For a mapper adjusting the address lines to mem block starting locations, actual mapping reveals base translations due to internal line usage: Actual usable addressing (subsets not just direct 1 KB jumps).
Solution Steps:
- IA3-IA4 Decoder: Drives which block enabled, demultiplexes the 1 KB space.
- Address Spread: Remaining lines \(IA11\)–\(IA0\) localize/block reallocation ensuring start address occurs at key translate points corroborated by subsets (spans as (0, 8, 16, 24)) differing by powers-of-two fits not singular mult jumps.
Thus, the correct block starting addresses are \((0,8,16,24)\), mapping through logical intermediate derivations rather than continuous 1K boundary placements.