首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

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

王爽汇编第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本身也要使用部分栈空间的缘故,造成程序中的栈溢出。

把栈定义的大一点即可。

热点排行