| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 721 人关注过本帖
标题:16位汇编问题不懂问问各位 pop ax的问题
只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
结帖率:100%
收藏
 问题点数:0 回复次数:3 
16位汇编问题不懂问问各位 pop ax的问题
假如1000:e是11
     1000:f是22
ss是1000 sp是e
pop ax后,1000:e和1000:f的内容都变了。但书上却说是不变?

原问题是这样的 我用debug试了试貌似是这样 啥原因呢? 中断处理程序导致的?

无聊看到一个问题 试了一下果然成了问题 不懂来请教本版的牛人 谢谢了~
搜索更多相关主题的帖子: 原因 pop 
2012-01-23 22:48
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
0B6A:0101 int 3
0B6A:0102
-d 1000:e 10
1000:0000                                            11 22                 ."
1000:0010  00                                                .
-t

AX=2211  BX=0000  CX=0000  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000
DS=0B6A  ES=0B6A  SS=1000  CS=0B6A  IP=0101   NV UP EI PL NZ NA PO NC
0B6A:0101 CC            INT     3
-d 1000:e
1000:0000                                            CE 05                 ..
1000:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1000:0020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1000:0030  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1000:0040  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1000:0050  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1000:0060  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1000:0070  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1000:0080  00 00 00 00 00 00 00 00-00 00 00 00 00 00         ..............
-r
AX=2211  BX=0000  CX=0000  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000
DS=0B6A  ES=0B6A  SS=1000  CS=0B6A  IP=0101   NV UP EI PL NZ NA PO NC
0B6A:0101 CC            INT     3
-
2012-01-23 22:48
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
程序代码:
//debug
-r ss
SS 0B91
:1000
-r sp
SP FFEE
:0010
-a
0B91:0100 pop ax
0B91:0101 int 3
0B91:0102
-e 1000:11
1000:0011  00.99
-e 1000:10
1000:0010  00.88
-d ss:10 11
1000:0010  88 99                                             ..
-t

AX=9988  BX=0000  CX=0000  DX=0000  SP=0012  BP=0000  SI=0000  DI=0000
DS=0B91  ES=0B91  SS=1000  CS=0B91  IP=0101   NV UP EI PL NZ NA PO NC
0B91:0101 CC            INT     3
-d ss:c 13
1000:0000                                      01 01 91 0B               ....
1000:0010  F5 05 00 00                                       ....

//anlysis
-t is int1 check intel pg usr mannual, named sys_trap?

sys_stack initialize position [1000:0010]

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +10 +11 +12 +13
                                                sp0               ;sp = sp0;
                                                        sp1       ;ax=9988h,sp = sp1;
                                                                  ;-t(enter int1)1.push eflag 2. push cs 3. push ip(just consider push operation)
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F +10 +11 +12 +13
                                    ip    cs    eflg              ;sp2->ip
                                                                  ;-t restore
                                                        sp3
结论:单步中断干的好事

技术问题,请不要以短消息方式提问
2012-01-23 23:55
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
膜拜大牛
2012-01-24 00:11
快速回复:16位汇编问题不懂问问各位 pop ax的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016798 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved