鱼C论坛

 找回密码
 立即注册
查看: 3345|回复: 6

[汇编作业] 检测点2.2

[复制链接]
发表于 2019-10-19 07:10:13 | 显示全部楼层 |阅读模式

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

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

x
不知道自己理解的对不对
1.
段地址*16+偏移地址=物理地址
段地址0001H*16+偏移地址=物理地址
因为偏移地址最小为0H
所以0010H+0000H=0010H
因为偏移地址最大为FFFFH
所以0010H+FFFFH=1000FH
cpu寻址范围(物理地址)地址最小为0010H最大为1000FH
2.
偏移地址最小为0
偏移地址最大为FFFF
sa*16+FFFFH=20000h
sa=20000H/16-FFFFH/16这里提一下,除以16为右移1位非数学算法
sa=2000H-FFFH
sa=1001
最小值为
sa*16=20000H-0
sa=2000H/16-0/16
所以sa最小值为1001H最大值为2000H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-18 16:59:29 | 显示全部楼层
第二道题的最小值我有疑问,我看答案是1001H,而我自己算出来是1000H,我是这样算的:
段地址*16+偏移地址=物理地址
SA*16+EA = 20000h
SA*16 = 20000h - EA
SA = (20000h - EA)/16
EA的范围为0h~FFFFh,SA求最小值,所以EA取最大值FFFFh
即 SA = (20000h - FFFFh)/16
    SA =   10001h/16
    SA =   1000h
不知道这样算哪里不对,请大家帮忙解惑,谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-19 19:18:09 | 显示全部楼层
JasonSong 发表于 2019-11-18 16:59
第二道题的最小值我有疑问,我看答案是1001H,而我自己算出来是1000H,我是这样算的:
段地址*16+偏移地址 ...

段地址*16+偏移地址=物理地址

段地址sa为1000h的寻址范围是10000h-1ffff
段地址sa为1001h的寻址范围是10010h-2000f
也就是说段地址每增加1那么寻址范围必然是进位的倍数,
如果16进制不好了解那么咱们用10进制来理解
段地址sa为1000h那么十进制是4096,他的寻址范围是65536-131071
段地址sa为1001h那么十进制是4097,他的寻址范围是65552-131087
物理地址20000h那么十进制是131072
那么段地址1000h(十进制4096)是永远不能寻址到20000h(十进制131072)的他的最大寻址地址是1ffff(十进制131071)
从10进制和16进制一对比我们可以看出1000h(十进制4096)至1001h(十进制4097)他的寻址范围十进制就是65536为基址和65552为基址他们之间是相差十进制的16的
所以段地址每增加1那么他的寻址范围就加了16了,所以说段地址*16咱们说的是十进制的16而已也就是说他的进制而已

咱们做个假设这样有利于理解
段地址*10+偏移地址(偏移地址最大为9999)=物理地址
那么就是
1000*10+9999=19999
1001*10+9999=20009
那么寻址到20000就必须是在sa*10的10位内必须包含10001也就是20000-9999
为什么说sa*10的10位内因为段地址每增加1那么寻址的基址就是增加10位(这里只是假设其实是16)
那么10001/10是1000那还余1呢,那也就是说1000是不能寻址到的那么必须进位到1001了
如果可以整除那么就不用进1了
那么如何去计算我的方法是
sa*10=20000-9999
sa=20000/10-9999/10
减数与被减数同时右移不是直接数学计算也就是
sa=2000-999
sa=1001
这里只是用10进制打个比方了解进制和理解他寻址方法和寻址的盲区

评分

参与人数 1荣誉 +5 鱼币 +1 贡献 +3 收起 理由
蜡笔小舅 + 5 + 1 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2019-12-4 11:50:58 | 显示全部楼层
108777771 发表于 2019-11-19 19:18
段地址*16+偏移地址=物理地址

段地址sa为1000h的寻址范围是10000h-1ffff

回答的好棒!感谢解答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-24 17:29:05 | 显示全部楼层
本帖最后由 yywsy 于 2019-12-24 17:31 编辑
JasonSong 发表于 2019-11-18 16:59
第二道题的最小值我有疑问,我看答案是1001H,而我自己算出来是1000H,我是这样算的:
段地址*16+偏移地址 ...


因为SA*16并不是数学运算的乘以16,是左移一位,那么根本不存在SA*16=10001H这样一个数,所以EA的最大值只能是FFF0H
所以 SA =(20000H-FFFOH)/16 = 1001H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-5 12:43:35 | 显示全部楼层
为甚么偏移地址也要/16
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-11 12:45:21 | 显示全部楼层
(1)0001H*16+0000H=00010H为最小值
        0001H*16+FFFFH=1000FH为最大值
(2)20000H=SA*16+偏移地址
        SA*16=20000H-偏移地址
        偏移地址范围为0H到FFFFH
        SA*16=20000H-0H SA=2000H为最大
        SA*16=20000H-FFFFH=10001 16位右移抛掉1 SA最小为1000H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 22:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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