鱼C论坛

 找回密码
 立即注册
查看: 2570|回复: 1

[汇编作业] 检测点2.2

[复制链接]
发表于 2019-3-25 00:21:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
由于编程习惯,习惯性用0x开头表示16进制。

(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为  0x0010  到  0x1000F。
解题过程:
物理地址=段地址*0x10+偏移地址
偏移地址范围为0x0~0xFFFF
所以该段地址寻址范围为
(段地址*0x10 + 0x0) ~ (段地址*0x10 + 0xFFFF)
即 0x1 * 0x10 ~ 0x1 * 0x10 + 0xFFFF
    =0x00010 ~ 0x1000F
答:CPU的寻址范围为 0x10 到 0x1000F

(2)有一数据存放内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为_______,最大为______。
提示,反过来思考一下,当段地址给定为多少,CPU无论怎么变化偏移地址都无法寻找到20000H单元?
解题过程:
已知物理地址0x20000,变量段地址SA。
我们知道偏移地址范围(0x0~0xFFFF),
使用公式:物理地址 = 段地址*0x10 + 偏移地址
段地址 = (物理地址 - 偏移地址) / 0x10
最小值:
SA=(0x20000 - 0xFFFF) / 0x10
    = 10001 / 0x10
    = 0x1001(向上取整)
最大值:
SA=(0x20000 - 0x0) / 0x10
    =0x20000 / 0x10
    =0x2000
答:最小为0x1001,最大为0x2000

反向思考:
由于段地址都是为0x10的倍数,由上题可知最小为0x1001,最大为0x2000。
答:SA<0x1001 或 SA > 0x2000,CPU无论怎么变化偏移地址都无法寻找到0x20000单元。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-15 07:12:44 | 显示全部楼层
本帖最后由 XinSong 于 2019-8-15 08:08 编辑

嗝,谢谢,稍微看懂了,自己在仔细研究了一下,才发现,/16是向左位移,而不是用数学的思想去搞他。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-5 16:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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