skw 发表于 2014-6-18 14:20:42

【求助】王爽的《汇编语言》实验3的问题



assume       cs:codesg   
codesg       segment   
          mov   ax,2000h   
          mov   ss,ax   
          mov   sp,0   
          add   sp,4   
          pop   ax   到这里就报错我换了两台电脑都一样   
          pop   bx                                                                  
          push   ax                                                            
          push   bx                                                            
          pop   ax   
          pop   bx   
          mov   ax,4c00h   
          int   21h   
codesg   ends   
end   


请各位前辈指点一下。这是怎么回事?谢谢!!

xiaosawanjava 发表于 2014-6-18 15:10:39

addsp,40   后面加个0试试

skw 发表于 2014-6-18 15:57:34

xiaosawanjava 发表于 2014-6-18 15:10 static/image/common/back.gif
addsp,40   后面加个0试试

谢谢!!如果改成40可以通过编译!但书本是他这样出题。是想告诉我们什么吗?请前辈指点:handshake

xiaosawanjava 发表于 2014-6-18 16:47:58

skw 发表于 2014-6-18 15:57 static/image/common/back.gif
谢谢!!如果改成40可以通过编译!但书本是他这样出题。是想告诉我们什么吗?请前辈指点

这个是因为debug 执行t 命令的时候要调用中断 ,而中断要push 几个值 (好像是flag cs ip)然后你mov sp,0add sp,4这两句话执行完成以后 sp = 4 ,栈的空间只有4个字节,少了2个 所以他就报错,如果你把 sp改为6或者6以上就可以了。

skw 发表于 2014-6-18 17:22:22

xiaosawanjava 发表于 2014-6-18 16:47 static/image/common/back.gif
这个是因为debug 执行t 命令的时候要调用中断 ,而中断要push 几个值 (好像是flag cs ip)然后你m ...

谢谢!我有一点明白了。再去好好学学栈空间!{:1_1:}
页: [1]
查看完整版本: 【求助】王爽的《汇编语言》实验3的问题