-
-
[旧帖] [讨论]发现一个神奇的指令:MOV SP,10H,求指导! 0.00雪花
-
发表于: 2012-6-10 00:35 2841
-
今天看别人的贴子,发现了一个神奇的指令,实在是搞不懂了,发出来求指点一二。
这个MOV SP,10H这种指令,居然可以对栈做这么多动作,实在是不解呀
先看一下下面这个简短的汇编文件,定义了一个大小为20H的栈,然后代码段中对SP进行了一次赋值操作。
然后用debug调试这个小程序,反编译下:
先看下加载后没执行时栈里的数据:
执行完mov ax,stack后栈里的数据,红色标出了变化:
再执行一步,哦不对,这里为什么一个-t执行了两步(mov ss,ax; mov sp,10h),大家再看一下变化:
对那些数据的分析发现,其实是CS:IP,SS:BP,11H,0EH,执行第二步以后原先的那个11,0E居然变成了02,33。
这个MOV SP,????H; MOV SS, ?????H为什么会对栈的数据产生这么奇怪的影响呢?
下面是ASM文件和编译后的EXE文件,有兴趣的人可自己调试下看下,我用的MASM中ML版本是6.1,LINK的版本是5.6。
这个MOV SP,10H这种指令,居然可以对栈做这么多动作,实在是不解呀
先看一下下面这个简短的汇编文件,定义了一个大小为20H的栈,然后代码段中对SP进行了一次赋值操作。
然后用debug调试这个小程序,反编译下:
先看下加载后没执行时栈里的数据:
执行完mov ax,stack后栈里的数据,红色标出了变化:
再执行一步,哦不对,这里为什么一个-t执行了两步(mov ss,ax; mov sp,10h),大家再看一下变化:
对那些数据的分析发现,其实是CS:IP,SS:BP,11H,0EH,执行第二步以后原先的那个11,0E居然变成了02,33。
这个MOV SP,????H; MOV SS, ?????H为什么会对栈的数据产生这么奇怪的影响呢?
下面是ASM文件和编译后的EXE文件,有兴趣的人可自己调试下看下,我用的MASM中ML版本是6.1,LINK的版本是5.6。
赞赏
他的文章
看原图
赞赏
雪币:
留言: