汇编网首页登录博客注册
masmaster的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
文章收藏

[2010-09-09 12:02] 习题4.24

设A1=0,A2=1,当n≥3时, An=An-1+3*An-2。请编写一个求An的子程序,要求采用递归算法。

答:
;-----------------------------------------------------

d:\MASM>type 424.asm
assume  cs:code
code    segment
start:
        mov cx,3    ;乘数
        mov bx,7    ;N
        xor ax,ax   ;结果An
        call An
done:
        mov ah,4ch
        int 21h
;子程序An
;功能:计算公式:An=An-1+3*An-2
;入口参数:bx=N,cx=3
;出口参数:结果AX

An      proc
        push bx
        sub bx,2
        add ax,bx
        pop bx
        dec cx
        jcxz ok
        call An
ok:     sub bx,1
        add ax,bx
        add sp,6
        jmp done
An      endp
;
code    ends
end     start
;-----------------------------------------------------
评论次数(1)  |  浏览次数(408)  |  类型(汇编习题集) |  收藏此文  | 

[  masmaster   发表于  2010-09-11 12:22  ]

加上了对N=1,N=2的判断

d:\MASM>type 424.asm
assume  cs:code
code    segment
start:
        mov cx,3
        mov bx,100      ;value=N
        xor ax,ax       ;result in ax
        call An
done:
        mov ah,4ch
        int 21h
;
An      proc
        cmp bx,1
        jz a
        cmp bx,2
        jz b
        push bx
        sub bx,2
        add ax,bx
        pop bx
        dec cx
        jcxz ok
        call An
ok:     sub bx,1
        add ax,bx
        add sp,6
        jmp done
a:      mov ax,0
        ret
b:      mov ax,1
        ret
An      endp
;
code    ends
end     start

d:\MASM>

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码