版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本程序作者cabbage功能:計(jì)算1億以內(nèi)數(shù)的階乘E-mail:1225673051@;**********************求階乘程序,十進(jìn)制輸入一個(gè)數(shù),十進(jìn)制輸出其結(jié)果*********************STROUTMACRO;宏,DOS功能調(diào)用,設(shè)置字符串輸出入口參數(shù)MOVAH,09HINT21HENDMCHAR_INMACRO;宏,DOS功能調(diào)用,設(shè)置字符輸入入口參數(shù)MOVAH,01HINT21HENDMDATASSEGMENTPUBLICDATA1DB10HDUP(0)LEN1DW?LEN2DW?CONST1DW30CONST2DW40INDEXDB10HDUP(0)STR0DB'********************FACTORIAL**********************$'STR1DB0AH,0DH,'Pleaseinputthenum:$'STR2DB0AH,0DH,'Error!$'STR3DB0AH,0DH,'Theresultis:$'STR4DB0AH,0DH,'****************************************************$'STR5DB0AH,0DH,'Thankyouforusing!$'DATA3DB0FF24HDUP(0)DATASENDSDATAS1SEGMENTPUBLICDB0FFFFHDUP(0)DATAS1ENDSDATAS2SEGMENTPUBLIC DATA2DB0FFFFHDUP(0)DATAS2ENDSDATAS3SEGMENTPUBLICDB0FFFFHDUP(0)DATAS3ENDSSTACKSSEGMENTSTACKDW2000HDUP(?)TOPLABELWORDSTACKSENDSCODES1SEGMENTASSUMECS:CODES1,DS:DATAS,SS:STACKS,ES:DATAS2START:MOVAX,DATASMOVDS,AXMOVAX,STACKSMOVSS,AXMOVAX,DATAS2MOVES,AXMOVSP,OFFSETTOPMOVLEN1,OFFSETDATA2MOVLEN2,OFFSETDATA3MOVDX,OFFSETSTR0STROUTs1:CALLZERO;清零DATA1,DATA2,DATA3,INDEX,為保證運(yùn)行結(jié)果不受前次影響XORAX,AXXORBX,BXXORCX,CXXORDX,DX;清零AX,BX,CX,DX等寄存器,為保證運(yùn)行結(jié)果不受前次影響MOVDX,OFFSETSTR1STROUTXORSI,SIdo1:CHAR_INCMPAL,0DHJZd1CMPAL,'0'JBerrorCMPAL,'9'JAerrorSUBAL,'0'MOVDS:BYTEPTR[SI],AL;輸入原始數(shù)據(jù),按位輸入,高位先輸INCSIJMPdo1d1:CMPSI,0JZexitMOVCX,SIXORDI,DIdo2:MOVAL,DS:BYTEPTR[SI-1]MOVES:BYTEPTRDATA2[DI],AL;先給DATA2中賦值,使其等于輸入的數(shù)據(jù)INCDIDECSILOOPdo2MOVCX,DIXORSI,SIXORDI,DIdo3:MOVAL,ES:BYTEPTRDATA2[DI]MOVDS:BYTEPTR[SI],ALINCDI;再將DATA1中的數(shù)據(jù)實(shí)現(xiàn),高位存放在地址較大的存儲(chǔ)單元INCSILOOPdo3s2:XORAX,AXCALLFARPTRFAC;調(diào)用階乘計(jì)算函數(shù)CMPSI,1;當(dāng)還沒有計(jì)算到1時(shí),再次進(jìn)入階乘函數(shù)JNZs2MOVAL,DS:BYTEPTR[SI-1]CMPAL,1JZs3JMPs2s3:CALLFARPTRRESULT;輸出結(jié)果JMPs1error:MOVDX,OFFSETSTR2STROUTJMPs1exit:MOVDX,OFFSETSTR5STROUTMOVAH,4CHINT21HCODES1ENDS;*********************************************************CODES2SEGMENT ASSUMECS:CODES2,DS:DATAS,SS:STACKS,ES:DATAS2;遞歸子過程,計(jì)算階乘,沒當(dāng)遞歸次數(shù)大于等于5000時(shí),返回再次進(jìn)入,降低棧對遞歸的限制FACPROCFARINCAXPUSHAXdo6:MOVAL,ES:BYTEPTRDATA2[DI-1]DECDICMPAL,0JZdo6INCDICMPDI,CONST2JBs4CALLFARPTRDZEROs4:CMPSI,1JNZs5MOVAL,DS:BYTEPTR[SI-1]CMPAL,1JZs9JMPs6s5:MOVCX,SIDECCXXORBP,BPMOVAL,DS:BYTEPTR[BP]SUBAL,1PUSHFAASMOVDS:BYTEPTR[BP],ALdo4:INCBPMOVAL,DS:BYTEPTR[BP]POPFSBBAL,0PUSHFAASMOVDS:BYTEPTR[BP],ALLOOPdo4POPFMOVAL,DS:BYTEPTR[SI-1]CMPAL,0JNZs7DECSIJMPs7s6:MOVAL,DS:BYTEPTR[SI-1]SUBAL,1MOVDS:BYTEPTR[SI-1],ALs7:CALLFARPTRMULTPOPAXCMPAX,1388HJZs8CALLFARPTRFACs8:RETs9:POPAXRETFACENDPCODES2ENDS;*********************************************************;乘法運(yùn)算函數(shù),用于多位非壓縮碼BCD數(shù)(DATA1)與多位非壓縮碼BCD數(shù)(DATA2)的乘法運(yùn)算;,并將結(jié)果存放在DATA2中。將多位數(shù)乘法運(yùn)算轉(zhuǎn)變成多位數(shù)加法來運(yùn)行CODES3SEGMENT ASSUMECS:CODES3,DS:DATAS,SS:STACKS,ES:DATAS2MULTPROCFARPUSHAXPUSHBXPUSHCXPUSHDXPUSHBPPUSHSIPUSHDIPOPDXPOPCXXORDI,DIXORBP,BPPUSHCXs10:POPCXPUSHCXPUSHBPXORSI,SIs11:MOVBH,0MOVAH,0MOVBL,DS:BYTEPTR[SI]MOVAL,ES:BYTEPTRDATA2[DI]INCSIMULBLAAM;BCD調(diào)整指令PUSHBPMOVBL,AHXORAH,AHADDAL,DS:BYTEPTRDATA3[BP]AAA;BCD調(diào)整指令A(yù)DDBL,AH;可能產(chǎn)生進(jìn)位MOVDS:BYTEPTRDATA3[BP],ALINCBPMOVAL,BLs12:XORAH,AHADDAL,DS:BYTEPTRDATA3[BP]AAA;BCD調(diào)整指令MOVDS:BYTEPTRDATA3[BP],ALINCBPMOVAL,AHCMPAL,0JNZs12POPBPINCBPCMPSI,CXJNZs11INCDIMOVCX,BPPOPBPADDBP,1CMPDI,DXJNZs10INCCXXORBP,BPXORDI,DIdo5:MOVAL,DS:BYTEPTRDATA3[BP]MOVES:BYTEPTRDATA2[DI],ALMOVDS:BYTEPTRDATA3[BP],0INCDIINCBPLOOPdo5POPSIPOPBPPOPDXPOPCXPOPBXPOPAXRETMULTENDPCODES3ENDS;*********************************************************;結(jié)果輸出函數(shù),將以非壓縮BCD碼存放的結(jié)果轉(zhuǎn)換成科學(xué)計(jì)數(shù)法,并以字符輸出CODES4SEGMENT ASSUMECS:CODES4,DS:DATAS,SS:STACKS,ES:DATAS2RESULTPROCFARPUSHDXPUSHDIMOVCX,DIPUSHCXXORSI,SIXORBP,BPdo7:MOVAL,ES:BYTEPTRDATA2[DI-1]ADDAL,30HMOVDS:BYTEPTRDATA3[SI],AL;將DATA2中存放的數(shù)以逆序傳到DATA3中,并轉(zhuǎn)換成ASCII碼DECDIINCSILOOPdo7MOVDS:BYTEPTRDATA3[SI],'$'MOVDX,OFFSETSTR3STROUTCMPSI,20JAs13MOVDX,LEN2STROUTJMPs14s13:MOVDS:BYTEPTRDATA3[11],'$'MOVDL,DS:BYTEPTRDATA3[BX]MOVAH,02HINT21HMOVDL,'.'MOVAH,02HINT21HMOVDX,LEN2INCDX;第一位已經(jīng)輸出了STROUTMOVDL,'e'MOVAH,02HINT21HMOVDL,'+'MOVAH,02HINT21HSUBSI,1MOVCX,SI;存放現(xiàn)有數(shù)據(jù)的長度CALLFARPTRADDSMOVBX,OFFSETINDEXMOVCX,10HMOVSI,CXdo8:MOVAL,DS:BYTEPTR[BX][SI-1]DECCXDECSICMPAL,0JZdo8INCCXINCSIdo9:MOVDL,DS:BYTEPTR[BX][SI-1]ADDDL,30HMOVAH,02HDECSIINT21HLOOPdo9s14:MOVDX,OFFSETSTR4STROUTPOPCXPOPDIPOPDXRETRESULTENDPCODES4ENDS;*********************************************************;清零DATA1,DATA2,DATA3,INDEX,為保證運(yùn)行結(jié)果不受前次影響CODES5SEGMENT ASSUMECS:CODES5,DS:DATAS,SS:STACKS,ES:DATAS2ZEROPROCFARPUSHDXMOVCX,10HXORSI,SIdo10:MOVDS:BYTEPTR[SI],0MOVDS:BYTEPTRINDEX[SI],0INCSILOOPdo10MOVCX,0FF00HXORSI,SIdo11:MOVES:BYTEPTRDATA2[SI],0MOVDS:BYTEPTRDATA3[SI],0INCSILOOPdo11POPDXRETZEROENDPCODES5ENDS;*********************************************************;在運(yùn)行的過程中,當(dāng)DATA2中的結(jié)果位數(shù)很大時(shí),選擇性保留固定長度的高位,將舍棄的位數(shù)加到指數(shù)INDEX上CODES6SEGMENT ASSUMECS:CODES6,DS:DATAS,SS:STACKS,ES:DATAS2DZEROPROCFARPUSHDXPUSHCXPUSHBXPUSHAXPUSHSIMOVCX,DISUBCX,CONST1MOVDI,CXPUSHDIPUSHCXCALLFARPTRADDSPOPCXPOPDIXORSI,SIdo12:MOVES:BYTEPTRDATA2[SI],0INCSILOOPdo12MOVCX,CONST1XORSI,SIdo13:MOVAL,ES:BYTEPTRDATA2[DI]MOVES:BYTEPTRDATA2[SI],ALMOVES:BYTEPTRDATA2[DI],0INCSIINCDILOOPdo13MOVDI,CONST1POPSIPOPAXPOPBXPOPCX
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鎘、鉍相關(guān)常用有色金屬項(xiàng)目發(fā)展計(jì)劃
- 2025年度二零二五版1209跨境電商合伙創(chuàng)業(yè)協(xié)議2篇
- 2025年度快遞配送員職業(yè)培訓(xùn)與聘用協(xié)議書3篇
- 二零二五年度grc線條裝飾線條產(chǎn)業(yè)聯(lián)盟與行業(yè)規(guī)范合同2篇
- 2024年瓶裝礦泉水品牌形象設(shè)計(jì)與銷售合作協(xié)議3篇
- 2025年度酒店與旅行社會(huì)展旅游服務(wù)合作協(xié)議3篇
- 2024年度水泥行業(yè)產(chǎn)能過剩處置購銷合同3篇
- 2024年電子采購合同標(biāo)準(zhǔn)版
- 2024年美團(tuán)電商合作商戶合同版
- 2024年項(xiàng)目監(jiān)管與代理業(yè)務(wù)協(xié)議版B版
- 2024統(tǒng)編版七年級(jí)上冊語文期末復(fù)習(xí):名著閱讀 練習(xí)題匯編(含答案解析)
- 2024年物業(yè)管理員(中級(jí))職業(yè)鑒定考試題庫(含答案)
- 統(tǒng)編版(2024版)七年級(jí)上冊歷史:期末復(fù)習(xí)課件
- 國開(陜西)2024年《中國制造之高端裝備》形考作業(yè)1-4答案
- 陪診培訓(xùn)課件
- 工會(huì)新聞寫作培訓(xùn)課題
- 醫(yī)療行業(yè)銷售內(nèi)勤工作匯報(bào)
- 統(tǒng)計(jì)年報(bào)和定報(bào)培訓(xùn)
- 浙江省杭州市西湖區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末考試語文試卷+
- 物流行業(yè)物流供應(yīng)鏈金融服務(wù)方案
- 兼職客服簽約合同范例
評(píng)論
0/150
提交評(píng)論