ASSUME CS:CODES,SS:STACKS
STACKS SEGMENT
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
STACKS ENDS
codes segment
START:
MOV AX,STACKS
MOV SS,AX
mov sp,16
mov bp,sp
sub sp,6
mov word ptr [bp-6],0001
mov word ptr [bp-4],0002
mov word ptr [bp-2],0000
push [bp-2]
push [bp-4]
push [bp-6]
call addr1
;add sp,6;此处如果不注释掉的话,栈内的数据会有很大的改变,这是为什么?
inc word ptr [bp-2]
MOV AH,4CH
INT 21H
addr1: push bp
mov bp,sp
mov ax,[bp+4]
add ax,[bp+6]
mov [bp+14],ax
mov sp,bp
pop bp
ret
CODES ENDS
END START
这个程序时有汇编实现c=a+b,参数存在栈里面。但是有个问题:运行add sp,6前后,栈内的数据会有很大变化(如图),不清楚这个变化是由什么引起的,请大家帮我解析一下,万分感谢!

------解决思路----------------------
单步中断功能用的吧;你这堆栈太小,没出异常已属幸运的了。