关于王爽的汇编语言第四章实验
assume cs:codesg<BR>codesg segment<BR> mov ax,2000H<BR> mov ss,ax<BR> mov sp,0<BR> add sp,4<BR> pop ax<BR> pop bx<BR> push ax<BR> push bx<BR> pop ax<BR> pop bx<BR> mov ax,4c00h<BR> int 21h<BR>codesg ends<BR> end<BR><BR>为什么我用t单步执行到pop ax的时候就显示错误,谁能给个意见,谢谢了,最好能解释下[align=right][color=#000066][此贴子已经被作者于2007-6-11 21:11:23编辑过][/color][/align]
要先PUSH才能POP啊 ls 说得对 <BR> push,pop 我觉得用得最多的是子程序中,保护寄存器了 <DIV class=quote><B>以下是引用<U>菜鸟上路</U>在2007-6-11 21:49:22的发言:</B><BR>要先PUSH才能POP啊</DIV>
<P>pop只是把ss:[sp]中的数据提出来而已<BR>它能否执行与是否有对应的push是没有关系的<BR>最多就是你提出来的数据不是你想要的数据而已</P> <P>LS说的没错,不过我说的是正确的程序</P> <DIV class=quote><B>以下是引用<U>Pants</U>在2007-6-12 23:28:38的发言:</B><BR><BR>
<P>pop只是把ss:[sp]中的数据提出来而已<BR>它能否执行与是否有对应的push是没有关系的<BR>最多就是你提出来的数据不是你想要的数据而已</P></DIV>
<P>但是在开始你没有东西入栈 <BR> 栈是空栈 就不能出栈拉嘛 <BR> </P> 很多病毒程序是利用了这一特性,用POP或RET指令来获得自己想要的地址 <DIV class=quote>pop只是把ss:[sp]中的数据提出来而已<br>它能否执行与是否有对应的push是没有关系的<br>最多就是你提出来的数据不是你想要的数据而已</DIV><br><br>正解
[align=right][color=#000066][此贴子已经被作者于2007-6-14 22:22:16编辑过][/color][/align]
<P>LZ的代码作用只不过是把2000:4和2000:6的内容交换而已,我在XP的虚拟8086模式下编译运行成功,没有错误。</P> <DIV class=quote><B>以下是引用<U>菜鸟上路</U>在2007-6-13 12:46:08的发言:</B><BR>很多病毒程序是利用了这一特性,用POP或RET指令来获得自己想要的地址</DIV><FONT style="BACKGROUND-COLOR: #f3f3f3">版主对病毒有研究?最近兴趣所在,不知道能不能像版主学习一下这方面的知识呢[em28]</FONT>
页:
[1]
