检测点3.2,通不过....希望大虾们能帮帮我!~~
本帖最后由 loop 于 2011-7-23 20:07 编辑(1)和(2)题目都没看懂....:'(分析了许久,也没看懂实现的过程!~~ 再看看甲鱼老师的视频教程。 我每一章都非常认真的看了!~~书上的练习也是没问题的,但是就这两题...嗨
就如监测点3.2的(1) ,我知道push 指的是2000:0000的地址,但为什么在栈中都没指定代码段ds的地址呢?不是ss只能和sp搭配么?
fjs2009 发表于 2011-7-21 11:32 static/image/common/back.gif
再看看甲鱼老师的视频教程。
我每一章都非常认真的看了!~~书上的练习也是没问题的,但是就这两题...嗨
就如监测点3.2的(1) ,我知道push 指的是2000:0000的地址,但为什么在栈中都没指定代码段ds的地址呢?
不是ss只能和sp搭配么?
hehe11 发表于 2011-7-21 11:56 static/image/common/back.gif
我每一章都非常认真的看了!~~书上的练习也是没问题的,但是就这两题...嗨
就如监测点3.2的(1) ,我 ...
ds通过"mov ax,1000Hmov ds,ax"进行初始化,
下面的push 就相当于push ds:
楼主是哪里不清楚..可以讲讲..总不能叫我们从头开始分析吧..{:5_111:}
学汇编不容易吧,不光动脑动手还要动纸动笔.头都有点大了,不过解出一道题还是很有成就感的.{:1_1:} 10000H应该是物理地址 你往20000H推
~ ~
~ ~
~ ~
~ ~
1000EH 2000EH
物理地址运算是 CS*10+IP
反正我是这么理解的. 以字单元一推,10000H,10002H,~~~~~1000EH都推20000H那边去,20000H那边是栈 死亡请帖 发表于 2011-7-21 15:55 static/image/common/back.gif
ds通过"mov ax,1000Hmov ds,ax"进行初始化,
下面的push 就相当于push ds:
好像我又懂了点!~~但是为什么在那段栈的空间内都没定义ds呢? chao_prince 发表于 2011-7-21 17:05 static/image/common/back.gif
楼主是哪里不清楚..可以讲讲..总不能叫我们从头开始分析吧..
检测点3.2的(1) push 是压入哪段的地址呢?我该怎么理解呢?
??? 发表于 2011-7-21 20:20 static/image/common/back.gif
10000H应该是物理地址 你往20000H推
~ ~
~ ...
检测点3.2的(1) push 是压入哪段的地址呢?我该怎么理解呢?
??? 发表于 2011-7-21 19:06 static/image/common/back.gif
学汇编不容易吧,不光动脑动手还要动纸动笔.头都有点大了,不过解出一道题还是很有成就感的.
呵呵,是这样的!~~希望在这么好的学习氛围下...大家共同进步咯:P 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 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-21 21:38 static/image/common/back.gif
呵呵,是这样的!~~希望在这么好的学习氛围下...大家共同进步咯
呵呵,非常详细呢!~~理解啦...非常感谢咯{:1_1:}
tmlnsc 发表于 2011-7-21 23:25 static/image/common/back.gif
呵呵,我来给你说一说吧:
mov ax,1000h 第一二行定义了ds段地址,因为10000h可以看作是1000:0,这 ...
嘻嘻,理解啦!~谢咯... chao_prince 发表于 2011-7-22 08:23 static/image/common/back.gif
只要是[0]这样的..都是默认DS段寄存器,而栈则是默认SS与SP..
即把DS:的内容,压到SS:
嘿嘿,谢咯!~
结贴~ 在各位的帮助下!~~顺利的理解了,谢谢大家。。 学习学习再学习
页:
[1]