主题:高手进来改错哈!!!!!
zh5026
[专家分:0] 发布于 2006-12-07 11:14:00
题目是这样的:
编写计算菲薄那切数列前20个值的程序.菲薄那切数列的定义如下:
F(0)=0
F(1)=1
F(n)=F(n-1)+F(n-2),n≥2
下面是我自己编的,但是显示不对,高手帮帮忙哈,一定给高分,呵呵
DATAS SEGMENT
COUNT EQU 9
F0 EQU 0000H
F1 EQU 0001H
RESULT DW 10 DUP(?),0DH,0AH,'$'
DATAS ENDS
STACKS SEGMENT
DB 100 DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,F0
MOV BX,F1
MOV CX,COUNT
AGAIN:ADD AX,BX
MOV RESULT,AX
push ax
lea dx,RESULT
MOV AH,09H
int 21h
pop ax
add bx,ax
mov RESULT,BX
PUSH AX
LEA DX,RESULT
MOV AH,09H
INT 21H
POP AX
loop AGAIN
MOV AH,4CH
INT 21H
CODES ENDS
END START
回复列表 (共5个回复)
沙发
zh5026 [专家分:0] 发布于 2006-12-09 20:53:00
自己顶了
板凳
yclz [专家分:1520] 发布于 2006-12-11 13:14:00
;菲薄那切数列序列
DATA SEGMENT
VALUE0 DW 0000H
VALUE1 DW 0001H
DIVN DB 0AH
VALUE3 DW 10 DUP(2)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET VALUE3
MOV AX,0000H
MOV [BX],AX
INC BX
INC BX
MOV AX,0001H
MOV [BX],AX
MOV CX,8;计算
AGAIN:
PUSH VALUE1
MOV AX,VALUE0
ADD AX,VALUE1
INC BX
INC BX
MOV [BX],AX
MOV VALUE1,AX
POP VALUE0
LOOP AGAIN
MOV BX,OFFSET VALUE3
MOV CX,10
SHOW: ;显示,可以改进
MOV AX,[BX]
DIV DIVN
PUSH AX
MOV DL,AL ;商放在AL,由于和不会超过一百,故如此
ADD DL,30H
MOV AH,2
INT 21H
POP AX
MOV DL,AH
ADD DL,30H
MOV AH,2
INT 21H
MOV DL,20H ;空格
MOV AH,2
INT 21H
INC BX
INC BX
LOOP SHOW
MOV AH,4CH
INT 21H
CODE ENDS
END START
显示部分还不具有通用性,你注意看下09中断和02中断的不同.
3 楼
zh5026 [专家分:0] 发布于 2006-12-12 11:06:00
还行
不过只有十个数,我要20
可能是没搞清输出是ASCII码
谢了
4 楼
zh5026 [专家分:0] 发布于 2006-12-12 11:16:00
还行
不过只有十个数,我要20
可能是没搞清输出是ASCII码
谢了
5 楼
zh5026 [专家分:0] 发布于 2006-12-12 13:42:00
DATA SEGMENT
VALUE0 DW 0000H
VALUE1 DW 0001H
DIVN DW 000AH
VALUE3 DW 50 DUP(?)
VALUE4 DB 10 DUP(?),0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET VALUE3
MOV AX,0000H
MOV [BX],AX
INC BX
INC BX
MOV AX,0001H
MOV [BX],AX
MOV CX,18;计算
AGAIN: PUSH VALUE1
MOV AX,VALUE0
ADD AX,VALUE1
INC BX
INC BX
MOV [BX],AX
MOV VALUE1,AX
POP VALUE0
LOOP AGAIN
MOV BX,OFFSET VALUE3
MOV CX,20
SHOW: ;显示
MOV AX,[BX]
PUSH AX
MOV SI,OFFSET VALUE4
MOV DX,0000H
CWD
DIV DIVN
ADD DX,30H
MOV [SI+3],DX
MOV DX,0000H
CWD
DIV DIVN
ADD DX,30H
MOV [SI+2],DX
MOV DX,0000H
CWD
DIV DIVN
ADD DX,30H
MOV [SI+1],DX
ADD AX,30H
MOV [SI],AX
CALL PRINT
MOV DX,20H
MOV AH,2
INT 21H
INC BX
INC BX
POP AX
LOOP SHOW
MOV AH,4CH
INT 21H
PRINT PROC
PUSH CX
MOV CX,4
LOOP1:MOV DL,[SI]
MOV AH,2
INT 21H
INC SI
LOOP LOOP1
POP CX
RET
PRINT ENDP
CODE ENDS
END START
我新编的,有点问题,高手再帮帮忙
我来回复