专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 汇编语言

王爽汇编第6章最后一题,写得和网上答案一致了,为什么win7下的command中还是出现无效指令,小弟我debug没有发现栈越界!

发布时间:2010-06-14 15:51:07 文章来源:www.iduyao.cn 采编人员:星星草
王爽汇编第6章最后一题,写得和网上答案一致了,为什么win7下的command中还是出现无效指令,我debug没有发现栈越界!!!
assume cs:code

 

a segment

  dw 1,2,3,4,5,6,7,8

a ends

 

b segment

  dw 0,0,0,0,0,0,0,0

b ends

 

code segment

start:

  mov ax,b

  mov ss,ax

  mov sp,10h

  mov ax,a

  mov ds,ax

  mov bx,0

 

  mov cx,8

s: push [bx]

  add bx,2

  loop s

  mov ax,4c00h

  int 21h

code ends

end start


------解决方案--------------------
代码完全无错。但是你得知道汇编语言在以下几个方面比较麻烦。
1、不同CPU的指令系统不一致。
2、编译器和连接器对指令系统和伪代码的支持不一致。
3、调试工具对指令系统和伪代码的支持不统一。
这一切归根结底在于CPU的不断更新,指令系统也不断变化;编译器也在更新,支持的伪代码也在不断变化。
所以学汇编语言,理清楚你学的内容所适用的场合是非常重要的,当然这也是学习汇编之所以令人郁闷的地方。

------解决方案--------------------
这个问题这半年出现过多次了。

可能是由于Windows下运行的DOS本身也要使用部分栈空间的缘故,造成程序中的栈溢出。

把栈定义的大一点即可。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: