[Duntemann's Book 3rd Edition]. How could 16-bit 8086 address 16 times as much memory as 8080?

别等时光非礼了梦想. 提交于 2020-07-09 05:25:18

问题


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?

kindly note highlighted sentence


回答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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!