开发者

Calculation of physical address in 8086

I learnt that the physical address is calculated by shifting the segment address (16-bit) left 4 times and adding it with the 16-bit 开发者_运维百科offset address. The memory in the 8086 architecture is 1M. My question is if the segment register and the offset value both are FFFFH and FFFFH then the result would be more than FFFFH i.e., more than 1M.

FFFF0

+ FFFF

----------

10FFEF

haw is it actually calculated...??


It does modular arithmetic, dropping any carries. So for a segment of FFFF and offset of FFFF, you compute FFFF0 + FFFF = 10FFEF but it "drops" the initial 1, leaving a real answer of 0FFEF.


The 8086 address bus is only 20 bits wide, which gives a max high address of 0xFFFFF = 1,048,575. It's calculated just the way you did it, but only the low-order 20 bits are used in the memory fetch.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜