fish-john 发表于 2014-6-9 19:24:40

关于王爽老师汇编语言69页CS,DS,SS在同一地址的问题

题目是在10000H-1001FH安排为代码段,并储存如下代码。为什么我做出来的结果是这样的   求大神为我解答?@小甲鱼师傅
下面上图

新手求支持!

fish-john 发表于 2014-6-9 20:00:22

:shock::shock:有么有师兄啊

xiaosawanjava 发表于 2014-6-9 20:49:12

你是所想说执行的时候代码改变了吗?
其实你只要吧sp设置大一点就好了,比如 mov sp,40这样就可以了
至于为什么是因为,你sp = 20而你代码最后一个是1edebug 执行命令t的之后会执行一个中断,中断会往栈中压入数据,而刚好压入的数据与代码重叠了,所以代码就被覆盖了。

fish-john 发表于 2014-6-9 22:12:51

xiaosawanjava 发表于 2014-6-9 20:49 static/image/common/back.gif
你是所想说执行的时候代码改变了吗?
其实你只要吧sp设置大一点就好了,比如 mov sp,40这样就可以了
...

是push指令把原来的code段的代码覆盖,从而导致后面的指令改变了吗?   
好像懂了点      谢谢!好人一生平安

xiaosawanjava 发表于 2014-6-9 23:18:52

fish-john 发表于 2014-6-9 22:12 static/image/common/back.gif
是push指令把原来的code段的代码覆盖,从而导致后面的指令改变了吗?   
好像懂了点      谢谢!好人一 ...

恩就是这样子的,入栈是sp-2   debug 执行 t命令是要调用中断的,所以要入栈 一共要入栈3个,也就是6个字节,20h-6你自己算下覆盖了几个字节。

fish-john 发表于 2014-6-10 00:17:11

xiaosawanjava 发表于 2014-6-9 23:18 static/image/common/back.gif
恩就是这样子的,入栈是sp-2   debug 执行 t命令是要调用中断的,所以要入栈 一共要入栈3个,也就是6个 ...

中断我还没开始学,这个我懂了嘿嘿
页: [1]
查看完整版本: 关于王爽老师汇编语言69页CS,DS,SS在同一地址的问题