| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 602 人关注过本帖
标题:[转载]关于斐波那契的第24项
取消只看楼主 加入收藏
cjj20082008
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-10-28
收藏
 问题点数:0 回复次数:0 
[转载]关于斐波那契的第24项

编译运行的时候出来了个56,不知道什么意思?
DATA SEGMENT
LIST DW 1,1,22 DUP (?)
COUNT DW 24
M EQU 8
N EQU 3
AN DW ?
DATA ENDS
STACK SEGMENT
DW 100 DUP (?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX

MOV CX,N
CALL SUB1 ;调用子程序,计算N!
MOV BX,AX ;BX<-N!
MOV CX,M
CALL SUB1 ;调用子程序,计算M!
DIV BX ;AX<-M!/N!
MOV BX,AX
MOV CX,M
SUB CX,N
CALL SUB1 ;调用子程序,计算(M-N)!
XCHG BX,AX
DIV BX ;AX<-M!/N!/(M-N)!
MOV AN,2
CALL KR ;调用子程序,将十六进制数转为十进制数
CALL CR ;调用子程序,显示回车换行

LEA SI,LIST
MOV CX,COUNT
SUB CX,2
P1: CALL FIB ;调用子程序,计算斐波那契数的第24项
LOOP P1
MOV AX,LIST[44]
MOV AN,5
CALL KR ;调用子程序,将十六进制数转为十进制数
MOV AH,4CH
INT 21H

SUB1 PROC ;计算阶乘的子程序
MOV AX,1
NEXT: MUL CX
LOOP NEXT
RET
SUB1 ENDP

KR PROC ;将十六进制数转为十进制数子程序
PUSH CX
PUSH BX
PUSH DX
MOV CX,AN
MOV BX,10
LP1: XOR DX,DX

DIV BX
PUSH DX
LOOP LP1
MOV CX,AN
LP2: POP DX
CALL SHOW ;嵌套调用子程序,将结果用十进制数在屏幕上显示出来
LOOP LP2
POP DX
POP BX
POP CX
RET
KR ENDP
SHOW PROC ;将结果用十进制数在屏幕上显示出来子程序
ADD DL,30H
MOV AH,02H
INT 21H
RET
SHOW ENDP


FIB PROC ;计算斐波契数的第24项子程序
PUSH AX
PUSH CX
MOV AX,[SI]
ADD AX,[SI+2]
MOV [SI+4],AX
ADD SI,2


POP CX
POP AX
RET
FIB ENDP

CR PROC ;显示回车换行子程序
PUSH DX
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
POP DX
RET
CR ENDP

CODE ENDS
END START

搜索更多相关主题的帖子: 计算 子程序 
2007-10-30 23:57
快速回复:[转载]关于斐波那契的第24项
数据加载中...
 
   



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

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