据说8086微处理器具有1MB内存和20位地址,16位数据总线。我的疑问是,如果是1MB内存,则意味着(2 ^ 20 * 2 ^ 3)(1字节= 8位)位或2 ^ 23位就是整个内存大小。然后,由于8086是一个16位寄存器,因此2 ^ 20(来自地址线)* 2 ^ 4(16位大小)就是内存,即2 ^ 24位,这不是我上面计算的。 所以我的评估中有一个错误,那是什么?。
答案 0 :(得分:1)
2 ^ 20个地址中的每一个均指8位字节。
8086的某些机器指令对字节(8位)进行操作(使用寄存器AH,AL,BH,BL等),而其他机器指令对字(16位)进行操作(使用寄存器AX,BX) ,...)。
使用Word指令时,内存中的两个相邻字节(地址(a)和(a + 1))被视为Word数据。我不记得8086是否对Word-data内存引用强制执行甚至地址对齐。但是,2 ^ 20字节仅包含2 ^ 19个字(与偶数地址对齐)。
位是保守的: (2 ^ 20 * 2 ^ 3)=(2 ^ 19 * 2 ^ 4)= 2 ^ 23