. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验二 完全分析- 傻瓜教程-包看,包懂,包理解  [待解决] 回复[ 83次 ]   点击[ 7361次 ]  
zhenglxd
[帖 主]   [ 发表时间:2009-06-02 17:03 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05
刚发错地方了。。。org!
很多人都分析过实验二了,但一来他们都用了复杂的操作来表示简单的问题,二来也不是每个人有耐心看他们长篇大论的所以 我这里出个傻瓜版 包看,包懂,包理解!

OK
首先我打开debug手动设置 ss为2000H,sp为10H 然后我d ss:0结果如下
2000:0000  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
大家看这个栈是空的啊

之后我手动设置  cs=1234H,ip=99 H然后我用a cs:99 键入mov ax,0000,先不运行我们在看下 ss:0
2000:0000  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
大家看这个栈依然是空的啊
ok
最后 我轻轻的键入了T然后回车  我们再看下ss:0
2000:0000  00 00 00 00 00 00 00 00-00 00 9C 00 34 12 82 06
我解释下 0682 你们现在不用理会他 他是标志寄存器 psw的值

1234 很明显是 cs地址了
009c 保存是的ip地址关于 009c怎么来的请看下面
-u cs:99
1234:0099 B80000        MOV     AX,0000
1234:009C 0000          ADD     [BX+SI],AL

看到了吧 009c是 mov ax,000后下一条指令的偏移地址

那么究竟发生了什么呢?你按T的时候 产生了中断信息,所以cpu在运行完当前指令后立即产生中断,
(cpu ip指向的是下条指令) 由于中断, 为了保护现场 cpu用栈 来把 psw,cs,ip
分别送入栈中(注意是有顺序的),然后 跳转到 中断处理程序
所以我们看到 这个栈内 他保存了 原先的一些信息,以便于中断处理完成后能根据这些信息继续执行下面的指令
具体一些复杂的地方这里就不说了 用王爽老师的话说 这叫知识屏蔽 会分散大家注意力的!
tsembrace
[第1楼]   [ 回复时间:2009-06-17 21:15 ]   [引用]   [回复]   [ top ] 
荣誉值:31
信誉值:3
注册日期:2009-06-15 19:20
哎~我在遇见这题的时候,是看出来cs,ip等值被写入栈了,再试几次,也能发现确实没错。但没学过中断机制咋知道它是要“保护现场”啊~还悟性~我晕。
liangdezhi
[第2楼]   [ 回复时间:2009-08-01 09:49 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-02-10 14:31
请问"轻轻的键入了T",和用力键入有什么不同???
我怎么不同你的,我设置了ss:sp之后,2000:0段就变成
2000:0000 00 00 00 00 00 00 00 20-00 00 08 01 E6 0A 4A 05 
我就知道0AE6是cs的值,0108是ip的值..
其他的我就不知道了,
看来我悟性不行啊,我差不多学完了第十章了,才回头看看.
就为了 王老师的 "悟性"才回头研究研究的..(我的心一直放不下这里)
但是还是没有结果.悲哀......
wombird
[第3楼]   [ 回复时间:2009-08-11 12:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-24 11:11
分析得很详细。我的“悟性”不高。因为太好奇,就到这里找答案啦。
heidaizx
[第4楼]   [ 回复时间:2009-09-21 20:09 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:3
注册日期:2008-11-09 22:07
呵呵,解释的很到位
assem
[第5楼]   [ 回复时间:2009-09-23 20:28 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-09-16 19:31
分析得很详细。我的“悟性”不高。因为太好奇,就到这里找答案啦。
------------------
回复:志同道合的,呵呵...
wnfzy-126
[第6楼]   [ 回复时间:2009-09-28 14:14 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2009-08-22 20:30
中断的保护现场机制是非常的严谨,ZHENGLXD分析的很好,很到位。反过来,说明我的悟性有待发掘。

                                              渭南市 范智勇
greentea
[第7楼]   [ 回复时间:2009-10-06 18:26 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-06 18:19
终于找到答案了,今天看到这里怎么看也不明白。谢谢了。差点打击我。
smallwolf
[第8楼]   [ 回复时间:2009-10-10 16:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:8
注册日期:2009-10-08 14:01
那前面的20又是什么啊?
smallwolf
[第9楼]   [ 回复时间:2009-10-10 16:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:8
注册日期:2009-10-08 14:01
0b02:0108 b82331 mov ax,3123
-t
ax=3123 bx=0000 cx=0000 dx=0000 sp=0010 bp=0000 si=0000 di=0000
ds=0b02 es=0b02 ss=2000 cs=0b02 ip=010b nv up ei pl nz na po nc
0b02:010b 50 push ax
-d 2000:0 f
2000:0000 00 00 00 00 00 00 23 31-00 00 0b 01 02 0b 66 05
为什么mov ax,3123执行后会出现这样啊?23 31是怎么来的啊?还没有压栈怎么出来的啊?
qzzsunlly
[第10楼]   [ 回复时间:2009-10-19 19:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2009-09-28 22:40
这悟性!
hxdhero
[第11楼]   [ 回复时间:2009-10-20 21:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-18 09:53
又一个悟性不高的人来报道了,楼主分析的好!
jhsxy2005
[第12楼]   [ 回复时间:2009-10-25 00:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-11 11:20
刚才实验了一下
指定入栈的,出现在应该出现的位置
其之后分别入栈的(每次执行后)显示不知道的东西、cs、ip
那个不知道的东西就是楼主分析的吧!

但是王老师书上写着,如果不实验都能分析出来,说明很有悟性
于是我不实验的情况下,被两个东西弄晕了,一个是之前的那个不知道的东西
不实验也不知道动态的情况呀!
另一个就是书上不知从何而来的2000:0007H处的20H

上机实验后,知道cs,知道ip,就是不知道之前入栈的是啥玩意
所以到这里寻求答案
rockcat
[第13楼]   [ 回复时间:2009-10-30 11:43 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:0
注册日期:2009-10-28 11:47
非常感谢楼主
呵呵,这次是专门是为这个而来论坛的
从分析,只知道保存了那些数据,而且也能找出对应关系
只是不明白,原来是保护现场

看到“悟性”,差点打击死我
a3187744a
[第14楼]   [ 回复时间:2009-11-25 20:40 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-14 19:20
哎,悲剧了。
我还以为是cpu一下处理两个代码来不及,所以先记下来一个,在搞那一个。
悟性啊!~~~~~悲剧了。。。。
liandakun
[第15楼]   [ 回复时间:2009-11-27 20:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-31 08:24
大家悟性都不咋地啊!这个我就心安啦。。。
liandakun
[第16楼]   [ 回复时间:2009-11-27 20:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-31 08:24
唉,不知道有没有学<<微机原理》这个课程的啊?我们大二学这个,也是清华大学的教授写的,好像作者叫周明德,那本书写的太乱了,可能是专业性太强,不适合初学者读,王爽老师的这本书当教材就好了,不至于始大家学了半年的微机原理了,竟不知汇编为何物.悲哀啊!
ldlihuanfa
[第17楼]   [ 回复时间:2009-12-28 13:20 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2009-12-18 19:53
我还是不明白,我只看到第三章,不太理解中断,首先手动设置ss,ip,按书中所说,只要有关ss的命令,就会产生中断,自然就变了,不知是如何手动设置,好象设置ss得通过命令才行吧,这里就卡住了
ldllihuanfa
[第18楼]   [ 回复时间:2009-12-28 20:13 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:1
注册日期:2009-12-24 11:13
我明白了,是用r命令来修改cs,ip这就不牵扯到指令
wtan
[第19楼]   [ 回复时间:2010-01-05 17:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-03 08:56
楼主分析很好,不过我有一点不明白,既然有东西入栈了,为什么sp不发生变化呢?
regex
[第20楼]   [ 回复时间:2010-01-06 01:00 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
楼主分析很好,不过我有一点不明白,既然有东西入栈了,为什么sp不发生变化呢?
------------------
回复:栈操作是以字为单位的。 每当入栈一次, sp-2,也就是说,入栈操作从高地址向低地址方向增长。这些东西, 还是用debug自己试验, 有的时候,说了半天还不如多做几次实验明白的透彻。
qiangzi
[第21楼]   [ 回复时间:2010-01-10 17:11 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:6
注册日期:2010-01-07 10:37
顶啊
hecyril
[第22楼]   [ 回复时间:2010-01-12 22:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-07 13:38
明白了
hygf99
[第23楼]   [ 回复时间:2010-01-18 23:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2009-10-17 21:41
0b02:0108 b82331 mov ax,3123
-t
ax=3123 bx=0000 cx=0000 dx=0000 sp=0010 bp=0000 si=0000 di=0000
ds=0b02 es=0b02 ss=2000 cs=0b02 ip=010b nv up ei pl nz na po nc
0b02:010b 50 push ax
-d 2000:0 f
2000:0000 00 00 00 00 00 00 23 31-00 00 0b 01 02 0b 66 05
为什么mov ax,3123执行后会出现这样啊?23 31是怎么来的啊?还没有压栈怎么出来的啊?
===========================================================================
我的是:
2000:0000 00 00 00 00 00 00 00 20-00 00 0b 01 02 0b 66 05
发出同样的疑问,第8个单元的20是从哪儿来的?
------------------
回复:
astlvk
[第24楼]   [ 回复时间:2010-02-03 16:17 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-12-23 03:55
悟性……咱被打击了下……
zjkl19
[第25楼]   [ 回复时间:2010-03-20 18:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2009-07-15 11:17
哈哈,我的悟性也不行啊~
ailesargentees
[第26楼]   [ 回复时间:2010-03-20 18:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-02 17:21
0b02:0108 b82331 mov ax,3123
-t
ax=3123 bx=0000 cx=0000 dx=0000 sp=0010 bp=0000 si=0000 di=0000
ds=0b02 es=0b02 ss=2000 cs=0b02 ip=010b nv up ei pl nz na po nc
0b02:010b 50 push ax
-d 2000:0 f
2000:0000 00 00 00 00 00 00 23 31-00 00 0b 01 02 0b 66 05
为什么mov ax,3123执行后会出现这样啊?23 31是怎么来的啊?还没有压栈怎么出来的啊?
===========================================================================
23 31 就是你Mov进ax的值
ailesargentees
[第27楼]   [ 回复时间:2010-03-20 18:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-02 17:21
LZ 举例子的时候是mov ax,00 自然之前相应的值变成00了
de8566
[第28楼]   [ 回复时间:2010-03-29 21:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-03-11 18:27
楼主分析的不错。呵呵,我知道是中断时候cs ip要压栈。最后两个字节我以为是操作码,晕死。至于其他的字节应该保存的是程序状态字和通用寄存器吧。
mr_z
[第29楼]   [ 回复时间:2010-04-01 15:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-03-26 16:06
呀、为啥我的悟性不太好呢。
gao693282043
[第30楼]   [ 回复时间:2010-04-11 09:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-04-06 11:41
太阳,汗...俺看到 ss cs ip在 2000:0 f中,还以为这个内存段是寄存器所在地址段呢,要不然怎能保存毫无相关的寄存器数据呢 唉 看了中断保护的解释才知道 我tm真傻 听都没听过 还悟性 ,nnd 奏性还差不多 王老真狠啊 一个悟性害得我好纠结!
plagueing
[第31楼]   [ 回复时间:2010-06-14 16:13 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-07-16 14:51
初学者可能觉得用'悟性'有点牵强,但如果看完全书在理解那一段代码,也许王老师就是因为熟练掌握全书,才在那一道题说 '悟性'
mess
[第32楼]   [ 回复时间:2010-06-16 13:44 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
初学者可能觉得用'悟性'有点牵强,但如果看完全书在理解那一段代码,也许王老师就是因为熟练掌握全书,才在那一道题说 '悟性'
------------------
回复:我觉得,debug提供我们的是数据,能从这些数据中找到规律本身就是一种“悟性”,比如cs、ip。而里面的标志寄存器 的值需要汇编的知识,不能算在里面。
donggs02
[第33楼]   [ 回复时间:2010-06-22 23:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-04-08 17:43
mov ax,2000
mov ss,ax
mov sp,0010
在实行完着段代码后栈地址被改变,在实行D命令时cpu就中断把寄存器的值压入栈,所以看到地址20000H中有数值。
  不只我这样分析对不
lin1712
[第34楼]   [ 回复时间:2010-07-13 16:39 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-06-01 10:03
0b02:0108 b82331 mov ax,3123
-t
ax=3123 bx=0000 cx=0000 dx=0000 sp=0010 bp=0000 si=0000 di=0000
ds=0b02 es=0b02 ss=2000 cs=0b02 ip=010b nv up ei pl nz na po nc
0b02:010b 50 push ax
-d 2000:0 f
2000:0000 00 00 00 00 00 00 23 31-00 00 0b 01 02 0b 66 05
为什么mov ax,3123执行后会出现这样啊?23 31是怎么来的啊?还没有压栈怎么出来的啊?
===========================================================================
23 31 就是你Mov进ax的值
------------------
回复:为什么MOv进ax的值会出现在这里呢? 还有之前一步2000:0008的20又是什么意思呢??
chever19
[第35楼]   [ 回复时间:2010-07-13 17:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-12 14:54
提问一下:如果我们没有在程序中定义栈段,那又怎样保护现场呢???!!!
tianya0035
[第36楼]   [ 回复时间:2010-07-19 22:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-16 17:17
好多没有悟性的,这下我满意了:)
zwjq
[第37楼]   [ 回复时间:2010-08-07 09:28 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2010-07-31 15:39
我也悟性偏低。。。不知道那个20是什么意思,怎么会算ax进的呢?
gebagong
[第38楼]   [ 回复时间:2010-08-18 21:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-16 21:37
===========================================================================
23 31 就是你Mov进ax的值
------------------
回复:为什么MOv进ax的值会出现在这里呢? 还有之前一步2000:0008的20又是什么意思呢??
------------------
回复:

你可以这样理解:cpu要保存现场,现场包含哪些信息?无非就是执行了XX指令?这个指令的参数是多少?


所以当执行mov ax, 3123这条指令之前,要先把mov这条指令对应的2进制放到栈里保存起来,同样的,3123也要保存起来。而且,这种cpu自己保存的栈信息,并不影响sp的内容。
12sunfeng34
[第39楼]   [ 回复时间:2010-08-21 19:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-15 21:22
这刚学完第二章要是能搞明白 那悟性是够高的
guoshuang629
[第40楼]   [ 回复时间:2010-08-22 12:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-22 10:52
老师啊老师,这和悟性有什么关系啊?我就觉得和中断机制有关系,就是不知道有什么关系,老师说看“悟性 我一想我要是看答案不就相当于承认自己悟性不好了么。何况老师说看“悟性”,那一定是前面学过的内容可以解释这个问题,于是我足足用了两个小时来回想,还复习了前面的知识,结果依然一无所获。
令我无比惊讶的是,我上当了,这根本就没学过!!!!!!!!!!
dj_scorpio
[第41楼]   [ 回复时间:2010-08-25 19:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-13 11:06
必须承认自己悟性不高,只是不知道原来这道题把我们都变普通了。
iyt
[第42楼]   [ 回复时间:2010-08-27 00:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-25 18:20
原来是中断..
83849583
[第43楼]   [ 回复时间:2010-12-02 04:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-29 01:50
我不明白 CS 和 IP 的数据  CS IP 是个寄存器  寄存器在什么地方? 中断后 是把CS IP 的数据备份到栈中还是临时存放在栈中?  那下次 CPU 在执行指令的时候 是调用栈中的还是调用寄存器里的
idpanjian
[第44楼]   [ 回复时间:2010-12-03 12:13 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-12-03 12:08
提问一下:如果我们没有在程序中定义栈段,那又怎样保护现场呢???!!!
------------------
回复:同问,这个想不通呀。虽然知道了一些数值,但是只知然不知所以然。假如不设栈,按D中断后会怎样,
CS,IP本身不是寄存器吗,为什么要保护
guoqingshun123
[第45楼]   [ 回复时间:2010-12-06 21:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2010-11-18 22:02
我也报道一下,没这悟性,实验都没动,只是看过去,值是看出来了,就是不知道他为什么要这么做?老师说要屏蔽信息。我也好奇就不管了,免得混了。
michael47
[第46楼]   [ 回复时间:2010-12-15 16:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-13 21:26
3123是AX中的内容,之前的2000也是AX中的值。
yy0000111
[第47楼]   [ 回复时间:2010-12-16 11:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-16 11:41
哈哈!果然被我猜到!不过还没学后面,所以没明白什么中断,不过被我想到是CPU将寄存器内容暂存在内存里,为下一次指令准备!哈哈!
wtsmile
[第48楼]   [ 回复时间:2010-12-17 19:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-16 22:48
我确实悟性不高......
dallas48
[第49楼]   [ 回复时间:2011-01-07 16:38 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2011-01-06 10:33
只发现cs ip,这悟性貌似比较差- -!
quexiao521
[第50楼]   [ 回复时间:2011-05-05 23:27 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2011-04-27 23:01
完全不知道是怎么回事,我这悟性啊
frogoscar
[第51楼]   [ 回复时间:2011-06-09 18:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-16 07:53
这题确实跟悟性没啥关系,只不过没学过而已,学了12章才知道
frogoscar
[第52楼]   [ 回复时间:2011-06-16 02:03 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-16 07:53
请教为什么我改了bx,cx,dx,si,di,ax,bp的值,就bp和ax的值每次被保存起来?
(当然栈从最底上依次是psw(标志寄存器),cs还有ip的值。然后是bp的值,再是ax的值。)
请教高人~~~~~~~
liash
[第53楼]   [ 回复时间:2011-07-30 20:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-07-29 21:21
握手~
hubeilcsun
[第54楼]   [ 回复时间:2011-08-08 01:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-29 20:45
原来是硬件中断发生,cpu自动保护现场,自动进栈,然后自动出栈,sp的值也就回到原来数值。
可以睡觉了。
yipianyipian
[第55楼]   [ 回复时间:2011-08-22 22:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-21 21:07
我为了迎合悟性,牵强的认为,AX就是地址为20006的一个字型内存单元,冥冥中知道肯定是记录这个执行过程的,但是又没仔细看记录的是神马东东……

看来我悟性不行啊,果断继续努力学习!!
yipianyipian
[第56楼]   [ 回复时间:2011-08-22 22:27 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-21 21:07
回复:[第23楼]
------------------
我汗,一个高八位,一个低八位!!!
haker007
[第57楼]   [ 回复时间:2011-08-27 22:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-10 12:45
兄台你太执著了,我也是输入t后用力敲了回车!
tbag2011
[第58楼]   [ 回复时间:2011-10-07 14:28 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-09-18 15:25
兄台,有悟性的人啊!
fan3401284
[第59楼]   [ 回复时间:2011-10-18 16:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-10-17 16:17
楼主,分析的不错,期待后面的精彩见解。
fan3401284
[第60楼]   [ 回复时间:2011-10-18 21:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-10-17 16:17
0a06不是sp的值吗?
fan3401284
[第61楼]   [ 回复时间:2011-10-18 21:55 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-10-17 16:17
3楼的 0ae6是sp 的值的啊?你整对没有啊?
javaimgod
[第62楼]   [ 回复时间:2012-01-18 03:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-01-10 21:29
看了上面兄弟们的发言,发现其实大家悟性都很不错的!
我是不知道什么是bp,不知道什么是中断,我就发现了cs:ip的值在栈里了,还有那个AX的值,什么标志寄存器
没学过不知道。以为自己悟性不行,看来不关悟性的事。没学过怎么也想不到正确答案。起码大概意思是猜对了:)
252152130
[第63楼]   [ 回复时间:2012-02-10 03:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2011-10-25 00:56
我差 ~~~我了个去 。。。o(︶︿︶)o 唉我来报道了 不为自己解释~~~思考+实验了 3个小时 ~~ 可怜的单身男飘过 顺便问问这里有大二大一大三或大四的 MM 或姐姐吗~~— —求介绍摆脱单身2.14 快到了~~ ~~~
hdb
[第64楼]   [ 回复时间:2012-02-14 11:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-02-05 17:11
我了个去哦,原来是这门回事赛,在之前我还以为我那里弄错了勒,结果看来实验2,原来是正常的,晕,现在更是明白了,谢谢了,我收了
zhanyue4
[第65楼]   [ 回复时间:2012-04-03 22:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-03-31 17:30
非常感谢讲解 试着做了下 理解了
guyanqiuyu
[第66楼]   [ 回复时间:2012-04-11 17:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-04-11 15:22
非常感谢楼主
liaq
[第67楼]   [ 回复时间:2012-04-24 15:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-04-24 15:06
为了满足关于“悟性”的虚荣心,这个我也琢磨了半天,结果还是得不出正确的结论。

经过多次给寄存器赋不同值得实验,得出一些结果:
设定的栈段中的内容在执行mov ss,ax后发生了变化;
其中 :00 到 :05不改变;08、09和0E、0F的改变是固定的;
06、:07存放的是AX的值;0A、0B存放IP的值;0C、0D存放的是CS的值;这些值在随后运行指令后如果发生了改变,那么内存单元的值也会相应改变。
执行入栈指令,这些被改变的内存单元的值不是被新值覆盖掉,而是整体上移,这是我觉得最奇怪的一点。

看了大家的分析,才清楚这是单步中断保护现场。看来我的悟性确实不佳,因为我实在想象不出,一个刚刚知道有“中断”这个名词的人需要什么样的悟性,才能根据前三章所学的汇编知识推理出正确的答案。
zhang898600
[第68楼]   [ 回复时间:2012-07-09 09:28 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-06-11 21:15
回复:[第23楼]
------------------
CPU产生中断时pushf(标志寄存器入栈),push cs,push ip,进入中断程序后,由于中断例程相当于子程序,所以还会有相关寄存器入栈,此中断入栈的是push bx,push ax
xuer2016
[第69楼]   [ 回复时间:2012-10-26 12:19 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-10-16 16:56
悟性差,好像懂点了
aminggdwh
[第70楼]   [ 回复时间:2014-10-16 16:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-09-20 15:47
我是后知后觉,没看之前不懂,看了之后才明白,谢谢楼主
henrywsnew
[第71楼]   [ 回复时间:2014-12-24 19:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-07-11 10:57
看了前面的明白了很多,但仍有一个问题,都说最先压栈的是标志寄存器,但我发现并不是这样!我先把标志寄存器压栈,再弹出到bx中,再mov ax,2000......这些操作都不会改变标志寄存器的值,为什么最后内存里标志寄存器的值和 bx不同呢?
henrywsnew
[第72楼]   [ 回复时间:2014-12-24 19:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-07-11 10:57
好像没人注意到这个问题,是我哪步弄错了吗。?
maliangbo
[第73楼]   [ 回复时间:2015-03-18 15:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2015-03-18 14:09
用力会按坏键盘
bnb
[第74楼]   [ 回复时间:2016-05-22 14:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2016-05-21 13:48
悟性。。。My GOD!!!
rickshaboy
[第75楼]   [ 回复时间:2018-02-07 23:42 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2018-02-07 23:30
评论好逗!
zzt741
[第76楼]   [ 回复时间:2020-09-24 15:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2020-09-24 13:16
请教为什么我改了bx,cx,dx,si,di,ax,bp的值,就bp和ax的值每次被保存起来?
(当然栈从最底上依次是psw(标志寄存器),cs还有ip的值。然后是bp的值,再是ax的值。)
请教高人~~~~~~~
------------------
回复:又一个悟性不高的人来这找答案了,顺便挖挖坟,评论都好有趣啊
我发现ip前面保存的是bp的值(感谢52L的提醒),再前面始终保存的是ax的值,但为什么会保存他们呢?
frinck
[第77楼]   [ 回复时间:2021-02-26 14:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2020-01-14 16:43
悟性老高了
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved