当前位置:首页 > 芯闻号 > 充电吧
[导读] π,派,3.1415926...,百度空间给显示出来的,怎么好像是个《小门》。用汇编语言编程的题目,要求输入圆的半径,计算出周长和面积。求解这个题目,必须要用到圆周率 π 这个参数。大家都知道,π

 π,派,3.1415926...,百度空间给显示出来的,怎么好像是个《小门》。


用汇编语言编程的题目,要求输入圆的半径,计算出周长和面积。


求解这个题目,必须要用到圆周率 π 这个参数。


大家都知道,π 是无穷循环小数。编程时,很多人认为,要用到浮点数的运算。


有人为了省事,就直接用 3 来代表 π,呵呵,这个误差,可就有些太大了。


如果采用 π 的近似值来计算,其实,也并不费事。


π 的近似值有两种公式:


约率 = 22/7    = 3.1428571428571428571428571428571

密率 = 355/113 = 3.1415929203539823008849557522124


如果采用密率来计算,由此带来的误差小于 0.0000003。

这个精度,可说是相当的高了,基本上,可以满足任何需求。


乘以 335、除以 113,完全是用整数计算,算法简单,速度极快,占用内存空间也小。


用整数计算完毕后,在显示的时候,则需要显示小数点以及小数。


显示小数,很多人都不会的。

其实,只要编写一个子程序,10 行而已,执行一遍即可显示一位小数。


下面的汇编语言程序,就是做而论道编写的:输入半径r,计算周长,显示四位小数。


;---------------------------

ASSUME  CS:CC, DS:QW

;---------------------------

QW  SEGMENT

    M1  DB  13, 10, 'Please  input  r : $'

    M2  DB  13, 10, 'L = $'

    M3  DB  13, 10, 'OVER ! $'

    R1  DW  ?

    S1  DW  ?

    S2  DW  ?

QW  ENDS

;---------------------------

CC  SEGMENT

START:

    MOV   AX, QW

    MOV   DS, AX

;

    LEA   DX, M1

    MOV   AH, 9

    INT   21H

    CALL  INPUT

    MOV   R1, CX

    ADD   CX, CX

    MOV   AX, 355

    MUL   CX

    MOV   CX, 113

    DIV   CX

    MOV   S1, AX    ;整数

    MOV   S2, DX    ;余数,即小数

DISP:

    LEA   DX, M2

    MOV   AH, 9

    INT   21H

    MOV   AX, S1

    CALL  OUTPUT

    MOV   DL, '.'   ;输出小数点

    MOV   AH, 2

    INT   21H

    CALL  OUTPUT_2  ;输出一位小数

    CALL  OUTPUT_2  ;输出一位小数

    CALL  OUTPUT_2  ;输出一位小数

    CALL  OUTPUT_2  ;输出一位小数

    JMP   EXIT

YICHU:

    LEA   DX, M3

    MOV   AH, 9

    INT   21H

EXIT:

    MOV   AH, 4CH

    INT   21H       ;返回DOS

;---------------------------

INPUT:

    MOV   BL, 10

    MOV   CX, 0

IN_X:

    MOV   AH, 7

    INT   21H

    CMP   AL, 13

    JE    IN_END

    CMP   AL, '0'

    JB    IN_X

    CMP   AL, '9'

    JA    IN_X

    MOV   DL, AL

    MOV   AH, 2

    INT   21H

    MOV   AL, DL

    SUB   AL, 30H

    MOV   AH, 0

    XCHG  AX, CX

    MUL   BL

    ADD   CX, AX

    CMP   CH, 0

    JNZ   IN_END

    JMP   IN_X

IN_END:

    RET

;---------------------------

OUTPUT:        ;输出整数

    MOV   BX, 10

    MOV   CX, 0

OL1:MOV   DX, 0

    DIV   BX

    ADD   DL, '0'

    PUSH  DX

    INC   CX

    CMP   AX, 0

    JNZ   OL1

    MOV   AH, 2

OL2:POP   DX

    INT   21H

    LOOP  OL2

    RET

;---------------------------

OUTPUT_2:      ;输出一位小数

    MOV   AX, S2

    MOV   CX, 10

    MUL   CX

    MOV   CX, 113

    DIV   CX

    MOV   S2, DX

    MOV   DL, AL

    ADD   DL, '0'

    MOV   AH, 2

    INT   21H

    RET

;---------------------------

CC  ENDS

    END  START

;---------------------------



程序执行后,显示如下:


C:MASM>ww


Please  input  r : 50

L = 314.1592


C:MASM>



用整数计算,再显示出来小数,这个方法,是不是做而论道的独创呢 ?


呵呵,应该不能这么说。


可是,以前,确实,也没有见谁发表过这种处理方法。





本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭