hehe11 发表于 2011-7-21 11:10:29

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

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

(1)和(2)题目都没看懂....:'(分析了许久,也没看懂实现的过程!~~

fjs2009 发表于 2011-7-21 11:32:37

再看看甲鱼老师的视频教程。

hehe11 发表于 2011-7-21 11:54:01

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

hehe11 发表于 2011-7-21 11:56:59

fjs2009 发表于 2011-7-21 11:32 static/image/common/back.gif
再看看甲鱼老师的视频教程。

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

死亡请帖 发表于 2011-7-21 15:55:56

hehe11 发表于 2011-7-21 11:56 static/image/common/back.gif
我每一章都非常认真的看了!~~书上的练习也是没问题的,但是就这两题...嗨
    就如监测点3.2的(1) ,我 ...

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

chao_prince 发表于 2011-7-21 17:05:41

楼主是哪里不清楚..可以讲讲..总不能叫我们从头开始分析吧..{:5_111:}

??? 发表于 2011-7-21 19:06:52

学汇编不容易吧,不光动脑动手还要动纸动笔.头都有点大了,不过解出一道题还是很有成就感的.{:1_1:}

??? 发表于 2011-7-21 20:20:39

10000H应该是物理地址      你往20000H推
~                                                ~
~                                                ~
~                                                ~
~                                                ~
1000EH                                     2000EH
物理地址运算是    CS*10+IP
反正我是这么理解的.

??? 发表于 2011-7-21 20:24:03

以字单元一推,10000H,10002H,~~~~~1000EH都推20000H那边去,20000H那边是栈

hehe11 发表于 2011-7-21 21:35:18

死亡请帖 发表于 2011-7-21 15:55 static/image/common/back.gif
ds通过"mov ax,1000Hmov ds,ax"进行初始化,
下面的push 就相当于push ds:

好像我又懂了点!~~但是为什么在那段栈的空间内都没定义ds呢?

hehe11 发表于 2011-7-21 21:37:05

chao_prince 发表于 2011-7-21 17:05 static/image/common/back.gif
楼主是哪里不清楚..可以讲讲..总不能叫我们从头开始分析吧..

检测点3.2的(1)   push 是压入哪段的地址呢?我该怎么理解呢?

hehe11 发表于 2011-7-21 21:38:02

??? 发表于 2011-7-21 20:20 static/image/common/back.gif
10000H应该是物理地址      你往20000H推
~                                                ~
~      ...

检测点3.2的(1)   push 是压入哪段的地址呢?我该怎么理解呢?

hehe11 发表于 2011-7-21 21:38:53

??? 发表于 2011-7-21 19:06 static/image/common/back.gif
学汇编不容易吧,不光动脑动手还要动纸动笔.头都有点大了,不过解出一道题还是很有成就感的.

呵呵,是这样的!~~希望在这么好的学习氛围下...大家共同进步咯:P

tmlnsc 发表于 2011-7-21 23:25:08

hehe11 发表于 2011-7-21 11:54 static/image/common/back.gif
我每一章都非常认真的看了!~~书上的练习也是没问题的,但是就这两题...嗨
    就如监测点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     push指令是以字单元为单位操作的,这第一条入栈指令就是把ds段中偏移地址为0的字单元中的内容送到栈顶。
push     第二个字单元的偏移地址当然就是2了,
push    第三个字单元的偏移地址当然就是4了,
push    第四个字单元的偏移地址当然就是8了,后面的以此类推
push
push
push
因为最先入栈的内容是ds中最上面的内容,入栈后放在最下面,后面入栈的内容依次放在它的上面,这样就实现了逆序存放的目的。

chao_prince 发表于 2011-7-22 08:23:00

本帖最后由 chao_prince 于 2011-7-22 09:00 编辑

hehe11 发表于 2011-7-21 21:37 http://bbs.fishc.com/static/image/common/back.gif
检测点3.2的(1)   push 是压入哪段的地址呢?我该怎么理解呢?

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

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

hehe11 发表于 2011-7-22 20:56:47

hehe11 发表于 2011-7-21 21:38 static/image/common/back.gif
呵呵,是这样的!~~希望在这么好的学习氛围下...大家共同进步咯

呵呵,非常详细呢!~~理解啦...非常感谢咯{:1_1:}

hehe11 发表于 2011-7-22 20:57:24

tmlnsc 发表于 2011-7-21 23:25 static/image/common/back.gif
呵呵,我来给你说一说吧:
mov ax,1000h       第一二行定义了ds段地址,因为10000h可以看作是1000:0,这 ...

嘻嘻,理解啦!~谢咯...

hehe11 发表于 2011-7-22 20:58:02

chao_prince 发表于 2011-7-22 08:23 static/image/common/back.gif
只要是[0]这样的..都是默认DS段寄存器,而栈则是默认SS与SP..
即把DS:的内容,压到SS:

嘿嘿,谢咯!~

hehe11 发表于 2011-7-22 21:01:12

结贴~ 在各位的帮助下!~~顺利的理解了,谢谢大家。。

菜鸟一个a 发表于 2013-12-25 18:09:53

学习学习再学习
页: [1]
查看完整版本: 检测点3.2,通不过....希望大虾们能帮帮我!~~