鱼C论坛

 找回密码
 立即注册
查看: 2568|回复: 19

检测点3.2,通不过....希望大虾们能帮帮我!~~

[复制链接]
发表于 2011-7-21 11:10:29 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 loop 于 2011-7-23 20:07 编辑

(1)和(2)题目都没看懂....:'(  分析了许久,也没看懂实现的过程!~~
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-21 11:32:37 | 显示全部楼层
再看看甲鱼老师的视频教程。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-21 11:54:01 | 显示全部楼层
我每一章都非常认真的看了!~~书上的练习也是没问题的,但是就这两题...嗨
    就如监测点3.2的(1) ,我知道push [0]指的是2000:0000的地址,但为什么在栈中都没指定代码段ds的地址呢?不是ss只能和sp搭配么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-21 11:56:59 | 显示全部楼层

我每一章都非常认真的看了!~~书上的练习也是没问题的,但是就这两题...嗨
    就如监测点3.2的(1) ,我知道push [0]指的是2000:0000的地址,但为什么在栈中都没指定代码段ds的地址呢?
不是ss只能和sp搭配么?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-21 15:55:56 | 显示全部楼层
hehe11 发表于 2011-7-21 11:56
我每一章都非常认真的看了!~~书上的练习也是没问题的,但是就这两题...嗨
    就如监测点3.2的(1) ,我 ...

ds通过"mov ax,1000H  mov ds,ax"进行初始化,
下面的push [0]就相当于push ds:[0]

评分

参与人数 1鱼币 +1 收起 理由
loop + 1 赞一个!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-21 17:05:41 | 显示全部楼层
楼主是哪里不清楚..可以讲讲..总不能叫我们从头开始分析吧..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-21 19:06:52 | 显示全部楼层
学汇编不容易吧,不光动脑动手还要动纸动笔.头都有点大了,不过解出一道题还是很有成就感的.{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-21 20:20:39 | 显示全部楼层
10000H应该是物理地址      你往20000H推
~                                                ~
~                                                ~
~                                                ~
~                                                ~
1000EH                                     2000EH
物理地址运算是    CS*10+IP
反正我是这么理解的.

评分

参与人数 1鱼币 +2 收起 理由
loop + 2 赞一个!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-21 20:24:03 | 显示全部楼层
以字单元一推,10000H,10002H,~~~~~1000EH都推20000H那边去,20000H那边是栈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-21 21:35:18 | 显示全部楼层
死亡请帖 发表于 2011-7-21 15:55
ds通过"mov ax,1000H  mov ds,ax"进行初始化,
下面的push [0]就相当于push ds:[0]

好像我又懂了点!~~但是为什么在那段栈的空间内都没定义ds呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-21 21:37:05 | 显示全部楼层
chao_prince 发表于 2011-7-21 17:05
楼主是哪里不清楚..可以讲讲..总不能叫我们从头开始分析吧..

检测点3.2的(1)   push [0]是压入哪段的地址呢?我该怎么理解呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-21 21:38:02 | 显示全部楼层
??? 发表于 2011-7-21 20:20
10000H应该是物理地址      你往20000H推
~                                                ~
~        ...

检测点3.2的(1)   push [0]是压入哪段的地址呢?我该怎么理解呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-21 21:38:53 | 显示全部楼层
??? 发表于 2011-7-21 19:06
学汇编不容易吧,不光动脑动手还要动纸动笔.头都有点大了,不过解出一道题还是很有成就感的.

呵呵,是这样的!~~希望在这么好的学习氛围下...大家共同进步咯:P
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-21 23:25:08 | 显示全部楼层
hehe11 发表于 2011-7-21 11:54
我每一章都非常认真的看了!~~书上的练习也是没问题的,但是就这两题...嗨
    就如监测点3.2的(1) ,我知 ...

呵呵,我来给你说一说吧:
mov ax,1000h       第一二行定义了ds段地址,因为10000h可以看作是1000:0,这个你应该明白吧
mov ds,ax
mov ax,2000h       第三四五行定义了ss段地址,因为20000h可以看作是2000:0,而栈开始是空的,栈中无元素,
                             也就没有栈顶 元 素,所以ss:sp应该指向栈最底部单元下面的一个单元,该单元地址就是栈最底部单元的
                            地 址(这里是2000:000f)加2,也就是2000:0010H,也就是说sp的值应该是10h.
mov ss,ax
mov sp,10h
push [0]    push指令是以字单元为单位操作的,这第一条入栈指令就是把ds段中偏移地址为0的字单元中的内容送到栈顶。
push [2]    第二个字单元的偏移地址当然就是2了,
push [4]   第三个字单元的偏移地址当然就是4了,
push [8]   第四个字单元的偏移地址当然就是8了,后面的以此类推
push [A]
push [C]
push [E]
因为最先入栈的内容是ds中最上面的内容,入栈后放在最下面,后面入栈的内容依次放在它的上面,这样就实现了逆序存放的目的。

评分

参与人数 1荣誉 +3 鱼币 +2 收起 理由
loop + 3 + 2 赞一个!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-22 08:23:00 | 显示全部楼层
本帖最后由 chao_prince 于 2011-7-22 09:00 编辑
hehe11 发表于 2011-7-21 21:37
检测点3.2的(1)   push [0]是压入哪段的地址呢?我该怎么理解呢?


只要是[0]这样的..都是默认DS段寄存器,而栈则是默认SS与SP..
即把DS:[0]的内容,压到SS:[SP-2],,这里减2是因为SP每次要自动减2,,
这样..可以懂否?

关键在于理解PUSH,POP指令的意思。。再重新复习下书本的内容。。

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
loop + 1 + 1 赞一个!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-22 20:56:47 | 显示全部楼层
hehe11 发表于 2011-7-21 21:38
呵呵,是这样的!~~希望在这么好的学习氛围下...大家共同进步咯

呵呵,非常详细呢!~~理解啦...非常感谢咯{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-22 20:57:24 | 显示全部楼层
tmlnsc 发表于 2011-7-21 23:25
呵呵,我来给你说一说吧:
mov ax,1000h       第一二行定义了ds段地址,因为10000h可以看作是1000:0,这 ...

嘻嘻,理解啦!~谢咯...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-22 20:58:02 | 显示全部楼层
chao_prince 发表于 2011-7-22 08:23
只要是[0]这样的..都是默认DS段寄存器,而栈则是默认SS与SP..
即把DS:[0]的内容,压到SS:[SP-2 ...

嘿嘿,谢咯!~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-22 21:01:12 | 显示全部楼层
结贴~ 在各位的帮助下!~~顺利的理解了,谢谢大家。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-12-25 18:09:53 | 显示全部楼层
学习学习再学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 13:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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