汇编:裴波那契数列前50项

汇编:裴波那契数列前50项

DATAS SEGMENT
	DW 200 DUP(0)
    ;一个数字需要64位,DW是16位,一共50个数字
   
DATAS ENDS

STACKS SEGMENT
    DW 30 DUP(0)
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
	.386
	MOV AX,DATAS
	MOV DS,AX
	MOV AX,STACKS
	MOV SS,AX
	MOV SI,0
	MOV DI,0 
	MOV EAX,1
	MOV EDX,0
	JMP PRINT11
A:
	CALL FIBO

FIBO:
	CMP DI,392
	JE BACK
	
	CMP DI,0	
	JE SET1

SET1BACK:
	CMP DI,8
	JE SET2

SET2BACK:
	ADD DI,8
	MOV EAX,DS:[DI-8]
	MOV EDX,DS:[DI-4]
	MOV ECX,DS:[DI-12]
	MOV EBX,DS:[DI-16]
	ADD EAX,EBX
	ADC EDX,ECX
	MOV DS:[DI],EAX
	MOV DS:[DI+4],EDX
	CALL PRINT

PRINTBACK:	
	CALL FIBO
	
;==================================================
SET1:
	MOV DS:[0],EAX
	MOV DS:[4],EDX
	ADD DI,8
	JMP SET1BACK
;==================================================
SET2:
	MOV DS:[8],EAX
	MOV DS:[12],EDX
	JMP SET2BACK
;==================================================	

;PRINT EDX EAX
PRINT:
	PUSH EAX
	PUSH EBX
	PUSH ECX
	PUSH EDX
	CMP EDX,10B
	JNB P1
	CMP EDX,0
	JA  P2
	CMP EAX,1000000000
	JNB P2
	CMP EAX,100000000
	JNB P3
	CMP EAX,10000000
	JNB P4
	CMP EAX,1000000
	JNB P5
	CMP EAX,100000
	JNB P6
	CMP EAX,10000
	JNB P7
	CMP EAX,1000
	JNB P8
	CMP EAX,100
	JNB P9
	CMP EAX,10
	JNB P10
	CMP EAX,1
	JNB P11

P1:
	MOV DL,1
	ADD DL,30H
	MOV AH,2H
	INT 21H
	MOV EAX,10011010001001110101010101100001B
	MOV EDX,0

P2:
	MOV EBX,1000000000
	DIV EBX
	PUSH EDX
	MOV EDX,EAX
	ADD DL,30H
	MOV AH,2H
	INT 21H
	POP EAX
	MOV EDX,0

P3:
	MOV EBX,100000000
	DIV EBX
	PUSH EDX
	MOV EDX,EAX
	ADD DL,30H
	MOV AH,2H
	INT 21H
	POP EAX
	MOV EDX,0

P4:
	MOV EBX,10000000
	DIV EBX
	PUSH EDX
	MOV EDX,EAX
	ADD DL,30H
	MOV AH,2H
	INT 21H
	POP EAX
	MOV EDX,0

P5:
	MOV EBX,1000000
	DIV EBX
	PUSH EDX
	MOV EDX,EAX
	ADD DL,30H
	MOV AH,2H
	INT 21H
	POP EAX
	MOV EDX,0

P6:
	MOV EBX,100000
	DIV EBX
	PUSH EDX
	MOV EDX,EAX
	ADD DL,30H
	MOV AH,2H
	INT 21H
	POP EAX
	MOV EDX,0

P7:
	MOV EBX,10000
	DIV EBX
	PUSH EDX
	MOV EDX,EAX
	ADD DL,30H
	MOV AH,2H
	INT 21H
	POP EAX
	MOV EDX,0

P8:
	MOV EBX,1000
	DIV EBX
	PUSH EDX
	MOV EDX,EAX
	ADD DL,30H
	MOV AH,2H
	INT 21H
	POP EAX
	MOV EDX,0

P9:
	MOV EBX,100
	DIV EBX
	PUSH EDX
	MOV EDX,EAX
	ADD DL,30H
	MOV AH,2H
	INT 21H
	POP EAX
	MOV EDX,0

P10:
	MOV EBX,10
	DIV EBX
	PUSH EDX
	MOV EDX,EAX
	ADD DL,30H
	MOV AH,2H
	INT 21H
	POP EAX
	MOV EDX,0	

P11:
	MOV EBX,1
	DIV EBX
	PUSH EDX
	MOV EDX,EAX
	ADD DL,30H
	MOV AH,2H
	INT 21H
	POP EAX
	MOV EDX,0
	MOV DL,32
	MOV AH,2H
	INT 21H
	
	POP EDX
	POP ECX
	POP EBX
	POP EAX
	JMP PRINTBACK
;PRINT END


;PRINT11
PRINT11:
	PUSH EDX
	PUSH EAX
	
	MOV DL,1
	ADD DL,30H
	MOV AH,2H
	INT 21H
	MOV DL,32
	MOV AH,2H
	INT 21H
	
	MOV DL,1
	ADD DL,30H
	MOV AH,2H
	INT 21H
	MOV DL,32
	MOV AH,2H
	INT 21H
	
	POP EAX
	POP EDX
	
	JMP A

BACK:
	MOV AX,4C00H
   	INT 21H
CODES ENDS
    END START
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值