注册 登录
编程论坛 汇编论坛

各位大神,求解一个汇编报错的原因

tjlsfc 发布于 2015-09-10 12:31, 4452 次点击
代码如下:

assume cs:tora

tora segment
mov ax,0ac3h
mov cx,3h
mov bx,2h
mov ss,cx
mov sp,0ah
taikoku:push bx
loop taikoku
mov ax,4c00h
int 21h
tora ends
end


程序执行到sp为4H的时候,突然报错说:NTVDM CPU 遇到无效指令?

请问这是什么原因?
6 回复
#2
wmf20142015-09-10 12:55
栈太小。只有10个字节,当int21时,已经没有足够的空间了。改成mov sp,100h试下。
#3
tjlsfc2015-09-10 13:29
回复 2楼 wmf2014
请问,int21是什么意思?为什么说我的栈太小,它们之间有什么关系呢?
#4
wmf20142015-09-10 13:40
int 21是DOS操作系统的中断服务指令,操作系统所涉及的输入、输出、文件操作均可以通过int 21调用完成。
#5
tjlsfc2015-09-10 16:00
回复 4楼 wmf2014
感谢版主,我回去好好研究下,为什么我的10个字节空间小了,造成报错。感谢您。
#6
hu9jj2015-09-10 19:25
楼主太小家子气了!一次中断将地址入栈一次至少需要4个字节,并且中断程序仍可能会继续对堆栈进行操作,不溢出才怪呢。
#7
zhulei19782016-04-08 21:47
10个字节太少了
1