assume cs:codeseg
codeseg segment
mov ax,2000H
mov ss,ax
mov sp,0
mov sp,4
pop ax
pop bx
push ax
push bx
pop ax
pop bx
mov ax,4c00H
int 21h
codeseg ends
end
执行完pop ax后sp变为0002 下一条指令为 int 3 求解啊
------解决方案--------------------------------------------------------
是因为你没有设置堆栈段吧,在开头处.
------解决方案--------------------------------------------------------
王爽汇编语言中似乎没有你说的这一段代码。但是看你的代段,本身如果执行也没有什么错误。之所以会出现错误,我推算是你的SS段2000也就是你的堆栈段和代码段CS有重叠,或者你用debug,本身它自己也要把一部份数据写入栈中,也有可能会修改掉程序本来内容。你如果想看到正确运行。不凡把2000换成1000看看。或是楼上大侠说的说那样,专门设置一个代码段空间。