通过下面几个程序来一步步理解附注4用栈传递数据的思想:
备注:下面的程序,我们假设初始的sp=10H,ss=0001H
mov ax,1
push ax ;(sp)=(sp-2)=10-2=E, (ss:[sp])=(ss:[E])=1
mov ax,2
push ax ;(sp)=(sp-2)=E-2=C, (ss:[sp])=(ss:[C])=2
mov ax,3
push ax ;(sp)=(sp-2)=C-2=A, (ss:[sp])=(ss:[A])=3
call addsub ;(sp)=(sp-2)=A-2=8, (ss:[sp])=(ss:[8])=(下一个指令的ip)
add sp,6 ;(sp)=(A+6)=10 还原为初始值
addsub:
mov ax,ss:[sp+2] ;(ax)=(ss:[sp+2])=(ss:[8+2])=(ss:[A])=3
add ax,ss:[sp+4] ;(ax)=3+(ss:[sp+2])=3+(ss:[8+4])=3+(ss:[C])=5
add ax,ss:[sp+6] ;(ax)=5+(ss:[sp+2])=5+(ss:[8+6])=5+(ss:[E])=6
ret