当前位置: 代码迷 >> 汇编语言 >> 王爽汇编第6章最后一题,写得和网上答案一致了,为什么win7下的command中还是出现无效指令,小弟我debug没有发现栈越界!
  详细解决方案

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

热度:5124   发布时间:2013-02-26 00:00:00.0
王爽汇编第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本身也要使用部分栈空间的缘故,造成程序中的栈溢出。

把栈定义的大一点即可。
  相关解决方案