问题
Duntemann says 8086 could address 16 times as much memory as 8080 and has gone on to elaborate upon this as 16 * 64K = 1MB. So I am assuming 16 bits at a time (16-bit processor) * 64K because 16 address lines (2^16). But, by that logic for calculation shouldn't 8080 (8-bit processor) also having 16 address lines have been able to address 8 * 64K = 0.5MB?
shouldn't the 8086 then be able to address twice as much as 8080?
回答1:
16x is the difference between 2^20
and 2^16
.
The 8080 has 16 bits of address space, meaning it can access 2^16 (65,536) different addresses. The amount of memory it can access is therefore 65,536 * (the amount of memory at each address). In our case, the amount of memory at each address is 1 byte, so the amount of addressable memory is 65,536 * 1 byte = 64KB.
The 8086 has 20 bits of address space, meaning it can access 2^20 different addresses (1MB)
And of course 1MB/64KB is 16.
Note that the "bit-ness" of a processor does not always reflect the size of its address bus. It often does, but not in these cases.
The 8080 is an 8-bit processor, but its address bus is 16 bits wide. Similarly the 8086 is a 16 bit processor but its address bus is 20 bits.
回答2:
From the Intel 8080' Wikipedia page:
Address width 16-bit
From 8086 page:
Address width 20 bits
4 more lines give 16x more address space.
To address the 1Mb of memory (20-bit), 8086 used memory segmentation (real mode), to get full memory address it used 2-bytes segment register and 2-bytes offset as:
segment * 16 + offset
来源:https://stackoverflow.com/questions/58879718/duntemanns-book-3rd-edition-how-could-16-bit-8086-address-16-times-as-much-m