用汇编计算圆周率
日期:2007年7月12日 作者: 查看:[大字体 中字体 小字体]-
概述:
用汇编语言编制计算程序并不是强项,特别是在涉及到浮点计算时,但汇编的一个好处就是速度快,所以在整数计算时可以试一下。本文的理论基础来自是电脑杂志1996年第10期,作者郭继展发表的一篇文章,作者提出一个公式:
PI=16arctg(1/5)-4arctg(1/239)
在展开成两个级数之和,然后整理得到:
PI=16x(1/5-1/(5^3/3)+1/(5^5/5)-1/(5^7/7)+...)-4x(1/239-1/(239^3/3)+1/(239^5/5)-1/(239^7/7)+...)
=4x(4x5/25-239/57121)/1-4x(4x5/25^2-239/57121^2)/3+4x(4x5/25^3-239/57121^3)/5-...
我对以上公式和推导一看就头疼,但根据它编出的程序却可以在4分钟内算出圆周率的小数点下8万位!(在P5/200上)想当年祖冲之算了一生才算到3.14159265,十九世纪英国人香克思用了一生才算到小数点下707位。
本程序的难点就是如何达到小数点下这么多位的精度,这个办法就是:在计算机中一个 Word 可以表示0到65535,我们可以在内存定义一个字来表示五位数,如果要算到小数点下10000位,则定义2000个字来表示它,如计算239/57121时,可以用23900000/57121,得到小于五位的结果存到第一个字中,然后用余数乘以100000再除57121,得到小于五位的结果存到第二个字中,依此类推。为了计算时不至于溢出,本程序动用一个双字来表示五位数,再用一个段64K来表示一个高精度数,共可以表示(65536/4)*5 共有小数点下 81920 位。一共用到三个段,第一个段存储(4*4*5/25^n),第二个段存储(4*239/57121^n),第三个段存储最后的结果即 PI。
本程序的意义就在于提出了一个表示高精度数的办法,如果内寸足够的话,理论上可以进行任何精度的计算。这里是编译好的可执行文件:pi.com,计算结果8万位的PI值:pi.txt,还有本程序要用到的两个公用子程序 scanf.asm 和 printf.asm,用于读入键盘数字输入和屏幕数字输出。(引用本程序时请注明出处,并请勿改动版权信息)源程序:
.386
CODE SEGMENT USE16
ASSUME CS:CODE,DS:CODE
ORG 100H
start:
jmp install
HANDLE DW ?
_MIN DW ?
_SEC DW ?
_SEC1 DW ?
_A DD ?
_B DD ? - [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] 下一页
-
- 用汇编计算圆周率 相关文章:
- ·用汇编计算圆周率
- 用汇编计算圆周率 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:如何检测CPU的主频
精品推荐
热点TOP10
- ·加密算法之BLOWFISH算法
- ·对称加密算法技术概述
- ·网络游戏封包基础
- ·破解 最新 SWF scanner V2.6.2
- ·深思3的狗加密的软件
- ·迷你日历 V2.2 算法分析
- ·身份证号编码规则
- ·John the Ripper使用说明
- ·PGP加密原理
- ·即时语音提示 & 校对软件InsTalk注册码及注册机 下
- ·The Bat!使用PGP程序之图形教程(1)
- ·简单算法——WinRCAD 2000公路设计软件
- ·暴破-AQUA 3D Screen Saver v1.5-水族馆屏保程序
- ·smbpasswd - samba加密口令文件
- ·拱猪大战 1.8破解手记--算法分析
- ·简单算法——邮件精灵 V2.0
- ·openssl的man中文文档
- ·屏幕撷取程序Ashampoo SnapYa! v1.53 算法分析
- ·文件密使pj心得
- ·飘雪动画秀3.02注册算法分析
