鱼C论坛

 找回密码
 立即注册
查看: 35220|回复: 138

[技术交流] 关于常见问题点的解答[涉及检测点1.1和2.2、2.3]

  [复制链接]
发表于 2011-6-4 19:20:05 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 loop 于 2017-1-11 11:23 编辑

为了解答新手的困惑,特推出此贴。

限于篇幅,只讲下经常被提及的问题。

如果是有其它问题不是很清楚的,可以直接短信我。

检测点 1.1的第一题,这是初学者最容易迷糊的。
检测点1.1.PNG
我们知道1KB=1024Byte,8KB=1024*8=8192Byte。
那么算出地址总线的宽度就套用公式,2的n次方=8192Byte
n就代表地址总线的宽度,只要算出n就行了。
  1. 2^10=1024
  2. 2^11=2048
  3. 2^12=4096
  4. 2^13=8192
复制代码
所以这道题的地址总线宽度为13。

检测点2.2.PNG

检测点 2.1的问题可以自己在DEBUG里调试就知道了。

检测点 2.2的问题,这也论坛上被提问最多的一道题。

先讲下第1小题:
因为偏移地址大小是0000~FFFF,所以用段地址乘以16,在加上最小0000和最大FFFF。
  1. 0001H * 16 + 0000 = 00010H
  2. 0001H * 16 + FFFF = 1000FH
复制代码
所以这道题的答案是:00010H~1000FH

第2小题:
先套用公式,段地址*16+偏移地址=物理地址
那么我们已经知道了物理地址为20000H

SA = (20000 - 0000H) / 16 = 2000H ;最大值

SA = (20000 - FFFFH) / 16= 10001H :最小值
那么这里就出问题了,10001不能被16整除,也就是段地址不能满足*16+偏移地址= 20000H
所以偏移地址就要发生变化来满足段地址*16+偏移地址=20000H
20000H - FFFF = 10001H
20000H - FFFE = 10002H
20000H - FFFD = 10003H
20000H - FFFC = 10004H
20000H - FFFB = 10005H
20000H - FFFA = 10006H
直到.......
20000H - FFF0 = 10010H
这时10010H满足16的倍数了
物理地址减去最大偏移地址除以16等于最小段地址
20000H - FFF0H  / 16 = 1001H  ;最小值
所以最小值是1001H,最大值是2000H

注意上面的16是10进制的数,运算时要转化成16进制,也就是10H。

检测点2.3.PNG

  1. mov ax,bx   ;读入指令缓冲器IP++ (第一次)

  2. sub ax,ax  ;读入指令缓冲器IP++,(第二次)sub命令把ax值清零了。(等同于ax-ax)

  3. jmp ax  ;读入指令缓冲器IP++ (第三次)

  4. 执行jmp ax后,IP值被ax覆盖,IP==0。(第四次)
复制代码
IP值变化了4次,因为ax=0,jmp命令把ax的值赋值给IP,所以最后IP为0


后续会继续添加,未完待续……

评分

参与人数 4荣誉 +10 鱼币 +15 贡献 +10 收起 理由
□为 + 2 很给力!
番茄 + 2
混学校的_Hoo + 1 很给力!
小甲鱼 + 10 + 10 + 10 赞一个!感谢朋友热心帮忙解答~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 15:22:10 | 显示全部楼层
看完了前5章后,在回头看看之前的知识点发现又有所理解,

当时检测点1.1我理解错误,认为是按照bit来计算的,所以用1024*8*8 嘿嘿

检测点2.2 第二题也错了,因为没有遵守 一个原则“段的起始地址也一定要是16的倍数”

检测点2.3  错的更离谱,因为还不理解IP是什么,哈哈

温故而知新,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-17 00:01:27 | 显示全部楼层
mark一下@@
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-19 10:53:46 | 显示全部楼层
顶楼主,请继续~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-23 17:03:01 | 显示全部楼层
谢谢楼主,本来2.3很迷茫,看到楼主的解析,终于懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-26 13:12:48 | 显示全部楼层
jmp ax 这条指令后,IP还会增加? 我觉得应该是直接改变IP。。。有没有增加IP,待验证……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-26 19:19:17 | 显示全部楼层
非常感谢楼主写的如此详细,1.2课后题终于弄明白了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-2 15:34:48 | 显示全部楼层
可能我很笨,还是半解中。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-3 01:28:11 | 显示全部楼层

不懂的话,可以发帖提问,如果觉得比较简单,可以直接PM我。
同时也欢迎提问、交流、讨论。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-20 15:25:56 | 显示全部楼层
楼主好人,答疑解惑。非常感谢,解决了我百思不得其解的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-5 21:41:04 | 显示全部楼层
这讲解的很详细 强烈支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-17 01:20:35 | 显示全部楼层
我有点笨,没理解透  mov ax,bx;应该是将bx的值给了ax,bx又不知道是多少,在执行jmp ax时,ip值被ax覆盖,这个能理解,但此时ax不应该就是bx吗,为什么ip==0呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-31 13:16:03 | 显示全部楼层
神马叫PM?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-2 17:00:44 | 显示全部楼层
看了,楼主的分析,又相当于复习了前几章的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-3 15:30:57 | 显示全部楼层
谁给个监测点的链接啊 我怎么找不到啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-5 08:47:00 | 显示全部楼层
mark一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-11 21:27:27 | 显示全部楼层
难得糊涂,感谢鱼哥指点迷津
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-15 15:15:33 | 显示全部楼层
还有些在哪里啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-18 00:03:38 | 显示全部楼层
俺来学习,多多指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-22 11:14:09 | 显示全部楼层
不错   哦 比小甲鱼的详细  诶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2020-11-30 12:30

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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