日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 芯聞號(hào) > 充電吧
[導(dǎo)讀]?π,派,3.1415926...,百度空間給顯示出來的,怎么好像是個(gè)《小門》。用匯編語言編程的題目,要求輸入圓的半徑,計(jì)算出周長和面積。求解這個(gè)題目,必須要用到圓周率 π 這個(gè)參數(shù)。大家都知道,π

?π,派,3.1415926...,百度空間給顯示出來的,怎么好像是個(gè)《小門》。


用匯編語言編程的題目,要求輸入圓的半徑,計(jì)算出周長和面積。


求解這個(gè)題目,必須要用到圓周率 π 這個(gè)參數(shù)。


大家都知道,π 是無窮循環(huán)小數(shù)。編程時(shí),很多人認(rèn)為,要用到浮點(diǎn)數(shù)的運(yùn)算。


有人為了省事,就直接用 3 來代表 π,呵呵,這個(gè)誤差,可就有些太大了。


如果采用 π 的近似值來計(jì)算,其實(shí),也并不費(fèi)事。


π 的近似值有兩種公式:


約率 = 22/7 ? ?= 3.1428571428571428571428571428571

密率 = 355/113 = 3.1415929203539823008849557522124


如果采用密率來計(jì)算,由此帶來的誤差小于 0.0000003。

這個(gè)精度,可說是相當(dāng)?shù)母吡耍旧?,可以滿足任何需求。


乘以 335、除以 113,完全是用整數(shù)計(jì)算,算法簡(jiǎn)單,速度極快,占用內(nèi)存空間也小。


用整數(shù)計(jì)算完畢后,在顯示的時(shí)候,則需要顯示小數(shù)點(diǎn)以及小數(shù)。


顯示小數(shù),很多人都不會(huì)的。

其實(shí),只要編寫一個(gè)子程序,10 行而已,執(zhí)行一遍即可顯示一位小數(shù)。


下面的匯編語言程序,就是做而論道編寫的:輸入半徑r,計(jì)算周長,顯示四位小數(shù)。


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

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 ? ?;整數(shù)

? ? MOV ? S2, DX ? ?;余數(shù),即小數(shù)

DISP:

? ? LEA ? DX, M2

? ? MOV ? AH, 9

? ? INT ? 21H

? ? MOV ? AX, S1

? ? CALL ?OUTPUT

? ? MOV ? DL, '.' ? ;輸出小數(shù)點(diǎn)

? ? MOV ? AH, 2

? ? INT ? 21H

? ? CALL ?OUTPUT_2 ?;輸出一位小數(shù)

? ? CALL ?OUTPUT_2 ?;輸出一位小數(shù)

? ? CALL ?OUTPUT_2 ?;輸出一位小數(shù)

? ? CALL ?OUTPUT_2 ?;輸出一位小數(shù)

? ? 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: ? ? ? ?;輸出整數(shù)

? ? 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: ? ? ?;輸出一位小數(shù)

? ? 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

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



程序執(zhí)行后,顯示如下:


C:MASM>ww


Please ?input ?r : 50

L = 314.1592


C:MASM>



用整數(shù)計(jì)算,再顯示出來小數(shù),這個(gè)方法,是不是做而論道的獨(dú)創(chuàng)呢 ?


呵呵,應(yīng)該不能這么說。


可是,以前,確實(shí),也沒有見誰發(fā)表過這種處理方法。





本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉