各位大哥 我最近在自学汇编 看的王爽的书 到段地址后面的检测点 我遇到了障碍
题目:有一数据存放在内存20000H单元内,现给定段地址为SA,若想用偏移地址寻址到此单元。则SA应满足的条件是:最小__
最大__?
公式是 SA*16+EA=20000H 后面我就不知道怎么算了 后来我去看了下网站! (实在没辙了)
答案:偏移地址为0000H~0FFFFH,因此从物理地址20000H可以得到SA的范围为:
1001H~2000H
过程:最大值为(20000H-0000H)/ 10H = 2000H
最小值为(20000H-0FFFFH)/10H = 1000.1H,因此上取整为1001H,注意段址SA为1000H时,无法得到物理地址20000H
这个答案我没看懂 为什么计算最大值和最小值 都是除以10H .. 为什么后面是1000.1 要取整为1001
为什么 SA为1000H时 无法得到物理地址20000H 为什么1001H 可以 我没搞懂 书上看也没看明白
求助各位大神 帮我过下这个问题吧3 感谢!
------解决方案--------------------------------------------------------
“为什么都要除以 10h ”,因为段址的单位是 para 节 为 10h 字节,所以地址转段址时就需要这个操作了。
“为什么 SA为1000H时 无法得到物理地址20000H 为什么1001H 可以 ”,SA=1000H 时要访问 200000H 的话,偏址得是多少?10000H!这不就已经超过了 0FFFFH 这个偏址的最大范围了。所以 1000.1 要向上取整而非向下,以保证对应的偏址在可表示的范围之内。