求一个同一个物理地址下不同逻辑地址的例子

来源:百度知道 编辑:UC知道 时间:2024/06/14 23:17:05

8086下的物理地址:
52641H
对应8086下的逻辑地址可以是:
段地址:偏移地址
5000H:2641H
5200H:0641H
5260H:0041H
5264H:0001H

5001H:2631H
5201H:0631H

...

太多了,没法写完,我给你说一下规律吧:
偏移地址的后4位与物理地址的后4位必定是一样的.原因是在进行地址合成的时候,段地址×10H的操作会将地址的后4位变成0,0加上一个数是这个数本身,所以偏移地址的后4位与物理地址的后4位必定是一样的
然后是确定偏移地址,在一般情况下,偏移地址的高12位可以是任何数,但如果物理地址小于FFFFH的话,那么偏移地址前12位的选择可能就少了,例子:
比如12345H,偏移地址可以取0005H(对应段地址是1234H)~FFF5H(对应段地址是0235HH)中的任何一个数(后4位的数不能变)
但如果换成01234H的话,偏移地址就只能在0004H(对应段地址是0123H)~1234H(对应段地址是0000H)中选了
(在上面的例子中你可能想到了用F124H:FFF4H来合成101234H,然后像寄存器那样通过舍去前面的1来得到01234H.这种方法不行,因为高出物理地址FFFFFH的那部分在兼容8086的高级的CPU中其实是可以寻址的,又因为现在几乎没有8086CPU了,所以不行)
确定了偏移地址,就可以求出段地址了,根据公式就可以求出来了:
10HX+偏移地址=物理地址
X=(物理地址-偏移地址)/10H

----WDSYMH