读书人

王爽汇编第6章最后一题,写得和网上答案

发布时间: 2012-02-06 15:52:45 作者: rapoo

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

把栈定义的大一点即可。

读书人网 >汇编语言

热点推荐