. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
主题 : :  第三章最后一个任务整不明白  [待解决] 回复[ 25次 ]   点击[ 2542次 ]  
helloworld
[帖 主] [ 发表时间:2007-10-25 11:21 ] 
荣誉值:10
信誉值:6
注册日期:2007-10-20 14:34
0B07:0100 mov ax,2000
0B07:0103 mov ss,ax
0B07:0105 mov sp,10 
0B07:0108 mov ax,3123 
0B07:010B push ax
0B07:010C mov ax,3366
0B07:010F push ax 

实验问我20000H---2000FH的数据为什么会改变,那这不明摆着代码将栈段设为20000H-2000FH这个范围,push以后,肯定是将ax的数据压进这个段里的,那所以就变了嘛,但我不知道他怎么把cs:ip的数据压进去了,而不是将3123压进去?
tianyanly1984
[第18楼] [ 回复时间:2008-12-15 07:45 ] 
荣誉值:0
信誉值:4
注册日期:2008-12-12 00:18
据个人分析,单步跟踪,发现变化始于对sp赋值后,而且后面每执行一步都有相应变化,心想变化的东西肯定是记录的栈顶元素的位置信息,于是继续跟踪,果然理出头绪发现其规律为:

         前面没用到的字节位都为00+ax+bp+ip+cs+未知数据

中间的bp是试出来的,我开始还以为是cx,但给cx赋了一个值后测试并不是如此,然后凭直觉又试了si、bp,测试结果就是bp,但后面那个“0d 8a",也就是我说的未知数据,不知道是什么意思?(不同机子执行都不固定,所以被我称作未知数据)
有没有人研究出来后面这两个字节位或者说字型数据是什么含义,其它的数据目前我至少已经找到了一个固定的规律了,希望我的领悟能对14楼有所帮助.
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved