asm 算出128位 斐波那契数列
【摘要】
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibon...
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
第一项固定是0,第二项固定是1。数列从第3项开始,每一项都等于前两项之和。
刚刚整理电脑的时候发现一份大学时期写的《用汇编计算128位斐波那契数列》,特此分享给大家。
TITLE Fibonacci Sequence
include irvine32.inc
.data
xh qword 0
xl qword 1
yh qword 0
yl qword 1
zh qword 0
zl qword 0
over1 byte 0
strTitle byte 'TITLE:128位2进制数计算"斐波那契数列"',0
str1 byte "("
str2 byte ")"
str3 byte "斐波那契元素个数为:",0
.code
displayHex proc
mov eax,dword ptr xh+4
call writehex
mov eax,dword ptr xh
call writehex
mov eax,dword ptr xl+4
call writehex
mov eax,dword ptr xl
call writehex
mov ebx,dword ptr xl+4
cmp ebx,0
jnz NEXT_1
mov al,str1
call writechar
mov eax,dword ptr xl
call writedec
mov al,str2
call writechar
NEXT_1:
call crlf
ret
displayHex endp
plus2 proc
mov eax,dword ptr xh
mov edx,dword ptr xh+4
mov dword ptr zh,eax
mov dword ptr zh+4,edx
mov eax,dword ptr xl
mov edx,dword ptr xl+4
mov dword ptr zl,eax
mov dword ptr zl+4,edx
mov eax,dword ptr yh
mov edx,dword ptr yh+4
mov dword ptr xh,eax
mov dword ptr xh+4,edx
mov eax,dword ptr yl
mov edx,dword ptr yl+4
mov dword ptr xl,eax
mov dword ptr xl+4,edx
;Y=X+Y即现在的 Y=Y+Z
mov eax,dword ptr zl
mov edx,dword ptr zl+4
add dword ptr yl,eax
;jnc为进位标志CF=0;jc为进位标志CF=1
;adc为 result=val1+val2+CF
adc dword ptr yl+4,edx
mov eax,dword ptr zh
mov edx,dword ptr zh+4
adc dword ptr yh,eax
adc dword ptr yh+4,edx
jnc NEXT_2
mov al,1
mov over1,al
NEXT_2:
ret
plus2 endp
;============
main proc ;主函数
mov ecx,400
mov edx,offset strTitle
call writestring
call crlf
BEGIN:
;输出xh和xl中的数
call displayHex
;确认最高位是否溢出
mov al,over1
cmp al,0
jnz NEXT_end0
call plus2
Loop BEGIN
;结束
NEXT_end0:
;统计输出总个数
mov al,str1
call writechar
mov edx,offset str3
call writestring
dec ecx
mov eax,400
sub eax,ecx
call writedec
mov al,str2
call writechar
call crlf
;停止等待
call readchar
exit
main endp
end main
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
文章来源: blog.csdn.net,作者:福州-司马懿,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/chy555chy/article/details/52137107
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)