鱼C论坛

 找回密码
 立即注册
查看: 4088|回复: 20

谁能教我做汇编检测2.2的题,在下感激不尽

[复制链接]
发表于 2012-5-8 18:59:34 | 显示全部楼层 |阅读模式
1鱼币

最佳答案

查看完整内容

首先第一题: 寻址方式是:段地址×16+偏移地址=物理地址 题目中给定的段地址是0001H 那么 段地址*16在8086汇编16位汇编里面的意思就是:在给定的段地址左移一位(按照默认的16进制计算),0001H左移一位就变成了00010H 再说偏移地址: 我们知道8086的16位汇编的寻址范围最大是2^16也就是64KB,这个在第一章已经涉及到了,那么按照16进制的方式64KB也就是说寻址范围是0~FFFFH 所以在给定段地址0001H的基础上的寻址范围就是:0001 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-5-8 18:59:35 | 显示全部楼层
首先第一题:
寻址方式是:段地址×16+偏移地址=物理地址
题目中给定的段地址是0001H
那么 段地址*16在8086汇编16位汇编里面的意思就是:在给定的段地址左移一位(按照默认的16进制计算),0001H左移一位就变成了00010H
再说偏移地址:
我们知道8086的16位汇编的寻址范围最大是2^16也就是64KB,这个在第一章已经涉及到了,那么按照16进制的方式64KB也就是说寻址范围是0~FFFFH
所以在给定段地址0001H的基础上的寻址范围就是:00010H+FFFFH,然后你用计算器算一下16进制的加法最后得出的结果就会是1000FH

下面说第二题:
根据本题的提示:我们要找到,当段地址给定为多少,CPU无论怎么变化偏移地址都无法寻到20000H单元

同样的道理,16位地址的寻址能力是64KB,也就是0~FFFFH,因为一个段地址的起始地址一定是16的倍数,一个数据的16进制形式左移1位,相当于乘以16,即是左移后的段地址能被10H整除,所以偏移地址就不能取到FFFFH了,即偏移地址的取值范围为 0H~FFF0H了
具体为什么,FFFF不能被10整除,而FFF0就可以呢,这个问题你就要打开计算器来算一下了,首先点击16进制输入FFFF,然后转换为10进制就是65535,很明显不能被10整除吗,然后FFF0同理转换为10进制就是65520,很明显就是可以被10整除吗,即偏移地址的取值范围为 0H~FFF0H了

下面开始计算真正的取值范围,同样也是一道算术题:
SA(最小值为)=(20000H-FFF0H)/16=10010H/16=1001H
SA(最大值为)=(20000H-0H)/16=20000H/16=2000H

这样你应该能够理解了吧!
很多同学在遇到这道题的时候,就应该拿出来计算器算一下就一目了然了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-8 19:17:24 | 显示全部楼层
是全部吗?...还是哪一题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-8 20:51:22 | 显示全部楼层
认真看书,好好学视频,自己多想。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-8 22:09:09 | 显示全部楼层
无语!虽然小甲鱼老师的视频很通俗!但是对一些什么都不会的新手来说!好像还是会有一点难度的!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-9 15:22:47 | 显示全部楼层
我看了不太难   你好好看看小甲鱼的视频就ok了  呵呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-9 15:25:43 | 显示全部楼层

那你就多看点书  例如看一哈 一到三章
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-11 14:07:26 | 显示全部楼层
梦想与现实 发表于 2012-5-8 19:49
首先第一题:
寻址方式是:段地址×16+偏移地址=物理地址
题目中给定的段地址是0001H

对你的解释提出异议,不能令我信服
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-11 15:33:55 | 显示全部楼层
侮辱后的坚强 发表于 2012-5-9 15:25
那你就多看点书  例如看一哈 一到三章

明白了!谢谢了!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-11 15:55:18 | 显示全部楼层
同学,我俩互相学习吧,加我好友
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-11 16:31:29 | 显示全部楼层
1541287173 发表于 2012-5-11 15:33
明白了!谢谢了!!

一起学习   额呵呵呵呵呵呵呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-11 18:58:21 | 显示全部楼层
马可波罗 发表于 2012-5-11 14:07
对你的解释提出异议,不能令我信服

那请问哪里有问题呢  不知道能不能提出来 大家一起参考一下呢  我也正好有个机会能够提高一下水平 ,感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-11 22:13:13 | 显示全部楼层
  刚开始的时候我也搞不懂那里,不过有个重要的细节你要记住,    先不要想段地址,  你要想偏移地址怎么和段地址配合,那样你就很容易理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-13 13:20:54 | 显示全部楼层
(1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH 。

  

解题过程:

物理地址=SA*16+EA

   

EA的变化范围为0h~ffffh

   

物理地址范围为(SA*16+0h)~(SA*16+ffffh)

   

现在SA=0001h,那么寻址范围为

   

(0001h*16+0h)~(0001h*16+ffffh)

   

=0010h~1000fh

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-13 13:21:40 | 显示全部楼层

一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 1001H ,最大为 2000H 。

当段地址给定为 1001H 以下和 2000H 以上,CPU无论怎么变化偏移地址都无法寻到20000H单元。

   

  

解题过程:

物理地址=SA*16+EA

   

20000h=SA*16+EA

   

SA=(20000h-EA)/16=2000h-EA/16

   

EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值

   

EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值

  

  

这里的ffffH/16=fffh是通过WIN自带计算器算的

位移来算确实应该为fff.fh,这里小数点后的f应该是省略了

单就除法来说,应商和余数,但此题要求的是地址最大和最小,所以余数忽略了

   

如果根据位移的算法(段地址*16=16进制左移一位,小数点后应该是不能省略的

我们可以反过来再思考下,如果SA为1000h的话,小数点后省略

SA=1000h,EA取最大ffffh,物理地址为1ffffh,将无法寻到20000H单元

这道题不应看成是单纯的计算题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-13 20:01:25 | 显示全部楼层
梦想与现实 发表于 2012-5-11 18:58
那请问哪里有问题呢  不知道能不能提出来 大家一起参考一下呢  我也正好有个机会能够提高一下水平 ,感谢

恩恩!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-19 14:48:57 | 显示全部楼层
重复的看下教程{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-20 14:59:20 | 显示全部楼层
这个就是看了视频不看书。看后又不温习的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-5-20 15:48:09 | 显示全部楼层
2.1是讲的有点不清楚。不过现在我是搞懂了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-4 09:54:44 | 显示全部楼层
梦想与现实 发表于 2012-5-11 18:58
那请问哪里有问题呢  不知道能不能提出来 大家一起参考一下呢  我也正好有个机会能够提高一下水平 ,感谢

不好意思 ,这么久了才回贴。你的解题思路是对的,但是其中有一些细节没有分清楚。我想思路与文字一致,才能使我们这些初学者不会产生误解的。
1.“因为一个段地址的起始地址一定是16的倍数”,段地址是用16位寄存器记录的,范围在0-ffff之间,可以不是16的倍数。在计算地址时,要乘16。
2.“首先点击16进制输入FFFF,然后转换为10进制就是65535,很明显不能被10整除吗,然后FFF0同理转换为10进制就是65520,很明显就是可以被10整除”。这句中的16与10的整除不知道是不是作者写错了。fff0能被10h整除,相当于65520能被16整除。初学者看到这里易产生费解的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 03:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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