| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2105 人关注过本帖
标题:求高手指点此处递归调用及堆栈的用法看不懂啊
取消只看楼主 加入收藏
gt2363422485
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-4-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:0 
求高手指点此处递归调用及堆栈的用法看不懂啊
;========================================================
; 文件名:   A7-2.ASM
; 功能描述: 求N!
;========================================================

SSTACK    SEGMENT STACK
        DW 64 DUP(?)
SSTACK    ENDS

PUBLIC    N, RESULT        ;设置全局变量
DATA    SEGMENT
N        DB ?            ;N的范围在1~8之间
RESULT    DW ?            ;N!的结果存于该变量中
DATA    ENDS

CODE    SEGMENT
        ASSUME CS:CODE, DS:DATA

START:    MOV AX, DATA
        MOV DS, AX
        MOV AX, OFFSET RESULT
        PUSH AX
        MOV AL, N
        MOV AH, 00H
        PUSH AX
        MOV DI, 0000H
        CALL branch
        JMP START            ;在此处设置断点,观察变量
;===子程序===
branch:    PUSH BP
        MOV BP,SP
        PUSH BX
        PUSH AX
        MOV BX,[BP+DI+06H]
        MOV AX,[BP+DI+04H]
        CMP AX,0000H
        JZ A1
        PUSH BX
        DEC AX
        PUSH AX
        CALL branch                ;递归调用
        MOV BX,[BP+DI+06H]
        MOV AX,[BX]
        PUSH BX
        MOV BX,[BP+DI+04H]
        MUL BX
        POP BX
        JMP A2
A1:        MOV AX, 0001H
A2:        MOV RESULT, AX
        POP AX
        POP BX     
        POP BP
        RET 0004H
CODE    ENDS
        END START
2014-04-30 17:00
快速回复:求高手指点此处递归调用及堆栈的用法看不懂啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018353 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved