关于递归中堆栈的问题???
程序如下:
data_seg segment
n_v dw ?
result dw ?
data_seg ends
stack_seg segment
dw 128 dup(0)
tos label word
stack_seg ends
code1 segment
main proc far
assum cs:code1,ds:data_seg,ss:stack_seg
start:
mov ax,stack_seg
mov ss,ax
mov sp,offset tos
push ds
sub ax,ax
push ax
mov ax,data_seg
mov ds,ax
mov bx,offset result
push bx
mov bx,n_v
push bx
call far ptr fact
.
.
.
ret
main endp
code1 ends
code segment
frame struc
save_bp dw ?
save_cs_ip dw 2 dup(?)
n dw ?
result_addr dw ?
frame ends
assume cs:code
fact proc far
push bp
mov bp,sp
push bx
push ax
mov bx,[bp].result_addr
mov ax,[bp].n
cmp ax,0
je done
push bx ;可不可以不要这句,这句的作用是什么?
dec ax
push ax
call far ptr fact
mov bx,[bp].result_addr
mov ax,[bx]
mul [bp].n
jmp short return
done: mov ax,1
return: mov [bx],ax
pop ax
pop bx
pop bp
ret 4;此处为什么要加4,这4个单元是什么东西占用了?
fact endp
code ends
end start
小弟对汇编很感兴趣,但感到很迷茫,急需高手指教,qq:49490255 . 谢谢!