吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1582|回复: 4
收起左侧

[求助] 刚开始学汇编,有一点不明白,请同学们帮忙看看解答。

[复制链接]
qwert0312 发表于 2019-12-28 21:30
(2)有一数据存放在内存20000H单元中,先给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是最小:      最大:      
从我看的书知识了解,内存地址等于段地址乘以16加偏移地址,那么反过来就是内存地址除以16减去偏移地址就是段地址。如果偏移地址为最小,那么段地址就应该是最大,所以20000H/16+0=2000H,那么最大的段地址就是2000H。同理求最小的段地址就是偏移地址为最大,那么就是20000H/16-FFFF=  这个数字是个错误的。
疑惑点:我在书上只看到段地址乘以16加上偏移地址等于物理地址,反推的话应该也是物理地址除以16减去偏移地址可以得到段地址。可是这道题看下来,我发现这样怎么不对了呢?如果我想反求的话,怎么是物理地址除以16减去偏移地址除以16?比如这个人工我想求最小段地址:公式怎么是:
20000H/16-FFFF/16=2000-FFF=1001H   有点迷糊?

求一起学习汇编的同学共勉。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

相伴左右 发表于 2019-12-28 23:12
A=B*16+C,得出B=(A-C)/16
kongkongqingqin 发表于 2019-12-28 23:58
 楼主| qwert0312 发表于 2019-12-29 09:34
相伴左右 发表于 2019-12-28 23:12
A=B*16+C,得出B=(A-C)/16

按照这个公式 C最大等于FFFF,最小等于0.
那么(20000H-FFFFH)/16 =10001H/16=1000   结果不对。如果按照20000H/16-FFFFH/16=1001H  结果就对了  算数我算错了吗?
相伴左右 发表于 2019-12-29 13:06
qwert0312 发表于 2019-12-29 09:34
按照这个公式 C最大等于FFFF,最小等于0.
那么(20000H-FFFFH)/16 =10001H/16=1000   结果不对。如果按 ...

我有一个想法,内存地址为20000H,那么对于相同的SA来说加上最大偏移最大地址应该是2000FH,而不是20000H,你应该使用2000F来减去FFFFH计算,当你使用20000H来计算的时候由于不是最大值内存地址,你减去一个最大偏移地址之后导致落入了SA-1的段地址内,你计算出来的结果就是SA-1,你说那个答案20000H/F-FFFF/F这个误差太大,建议你以后别这么计算,相同的运算,除法越多造成的误差就越大
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 00:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表