大家知道,如果4不改成6以上,DEBUG提示非法.我不明白的是:这段程序的栈段是如何设的,是多大?仅仅是 SS和SP知道了,但并不知道,段的大小啊.并且这个栈段初始是什么样的?如果第一个POP AX 没超界的话,那这个栈段一定大于20000H-20004H.最少是16字节,但这是怎么来的呢??还有如初始栈空间为空的话,SS:SP批向栈底的下一单元,直接POP的话不又超界了吗?.
苦恼啊,是我笨,还是我在钻牛角尖呢?不得其解!
assume cs:codesg
codesg segment
mov ax,2000h
mov ss,ax
mov sp,0
add sp,4
pop ax
pop bx
push ax
push bx
pop ax
pop bx
mov ax,4c00h
int 21h
codesg ends
end |