匯編語言實驗報告-計算階乘_第1頁
匯編語言實驗報告-計算階乘_第2頁
匯編語言實驗報告-計算階乘_第3頁
匯編語言實驗報告-計算階乘_第4頁
匯編語言實驗報告-計算階乘_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C#程序設計實驗報告PAGE2計算機學院實驗報告課程名稱匯編語言程序設計實驗名稱計算階乘姓名學號專業(yè)軟件工程班級地點第一實驗樓教師實驗題目用匯編語言編寫程序計算階乘N!數值有鍵盤輸入,結果在屏幕上面輸出。流程圖實驗代碼代碼要配合程序界面進行說明源代碼:DATASSEGMENTSTRINGDB"Pleaseinputanumber(0-10000):",0dh,0ah;提示用戶輸入數字字串WRONGSTRINGDB"Wronginput!!!Pleaseinputanumber!",0ah,0dh,'$';用戶輸入錯誤提示INPUTBUFFERDB6,?,6DUP(?);開辟出(留出)6個初值未知的字節(jié)單元空間C10DW10;輸入時進制轉換的數NDW?;要求階乘的數MDW?;步長TDW?;進位IDW?OUTPUTBUFFERDW30000DUP(?);開辟出(留出)30000個初值未知的字單元空間DATASENDSSTACKSSEGMENT;此處輸入堆棧段代碼STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXMAINPROC;主程序;CALLINPUT;調用輸入子程序CALLFAC;調用遞歸實現階乘MOVCX,DIROUTPUT:;輸出結果PUSHCXMOVDI,CXCALLOUTPUT;顯示輸入的數字POPCXDECCXCMPCX,0JGEROUTPUTDISPLAYLENGTH:;顯示長度MOVDl,0DHMOVAH,2INT21HMOVDl,0AHMOVAH,2INT21hEXIT:;退出MOVAH,07HINT21HMOVAX,4C00HINT21HMAINENDP;INPUTPROCNEAR;輸入子程序LEABX,STRING;指向輸入字符的地址MOVCX,33;循環(huán)的次數DISSTRING:MOVDl,[BX]MOVAH,2;顯示一個字符在屏幕上INT21HINCbxLOOPDISSTRING;循環(huán)輸出顯示JMPINPUTINITWRONGINPUT:;用戶輸入錯誤提示LEADX,WRONGSTRINGMOVAH,9INT21HINPUTINIT:;輸入初始化LEADX,INPUTBUFFER;裝載輸入緩沖區(qū)首地址MOVAH,0AH;輸入功能代碼INT21H;從鍵盤輸入一個數,以回車鍵結束MOVAX,0;累加器清0MOVCl,INPUTBUFFER+1;循環(huán)次數MOVCH,0LEABX,INPUTBUFFER+2;裝載字符存放區(qū)首地址INPUTONE:;輸入過程MULC10;乘以要轉換成的進制數MOVDl,[BX]CMPDl,'0';判斷輸入是否小于0JBWRONGINPUTCMPDl,'9'JAWRONGINPUT;判斷某位上的數字是否大于9ANDDl,0FHADDAl,DlADCAH,0;帶進位的加法INCBX;加1LOOPINPUTONE;循環(huán)輸入MOVN,AX;顯示低位MOVDl,0DHMOVAH,2INT21HMOVDl,0AH;顯示高位MOVAH,2INT21HRETINPUTENDP;FACPROCNEARMOVCX,N;取階乘的次數nMOVI,1DMOVM,0DPUSHDXMOVDI,0DMOVAX,DIMOVBX,2DmulBX;計算n!=n*(n-1)!MOVSI,AX;將n!的值保存在si中popDXMOVOUTPUTBUFFER[SI],1DCTRLI:MOVT,0MOVDI,0DCTRLDI:CMPDI,MJBEDONEjmpCMPCDONE:PUSHDXMOVAX,DIMOVBX,2DmulBXMOVSI,AXPOPDXMOVAX,OUTPUTBUFFER[SI]MOVBX,IMULBXADDAX,TADCDX,0MOVBX,10000DIVBXMOVT,AXPUSHDXMOVAX,DIMOVBX,2DMULBXMOVSI,AXPOPDXMOVOUTPUTBUFFER[SI],DXINCDIJMPCTRLDICMPC:CMPT,0JATHREE1JMPNEXTTHREE1:INCMMOVAX,TMOVOUTPUTBUFFER[SI+2],AXNEXT:INCICMPCX,0JNGIF0LOOPCTRLIIF0:MOVDI,MRETFACENDP;OUTPUTPROCNEARC2:PUSHDXMOVAX,DIMOVBX,2DmulBXMOVSI,AXPOPDXMOVBX,OUTPUTBUFFER[SI]BIDPROC;判斷位數MOVCX,10000MOVAX,BXMOVDX,0DIVCXMOVBX,DXMOVCX,1000CALLDDIVMOVCX,100CALLDDIVMOVCX,10CALLDDIVMOVCX,1CALLDDIVRETBIDENDP;DDIVPROC;除法子程序MOVAX,BXMOVDX,0DIVCXMOVBX,DXMOVDl,AlADDDl,30HMOVah,02HINT21HRETDDIVENDPRETOUTPUTENDP;CODESENDSENDSTART運行過程以及結果1.輸入數字4,顯示的結果應該為24,下圖表明結果正確2.輸入數字5,顯示的結果應該為120,下圖表明結果正確3.當輸入的字符不是數字而是其他時,程序會給出提示錯誤信息4.輸入數字6,顯示的結果應該為720,下圖表明結果正確5.輸入數字8,顯示的結果應該為40320,下圖表明結果正確6.輸入數字9,顯示的結果應該為362880,下圖表明結果正確7.輸入數字10,顯示的結果應該為3628800,下圖表明結果正確8.輸入數字15,顯示的結果應該為1307674368000,下圖表明結果正確9.輸入數字20,顯示的結果應該為2432902008176640000,下圖表明結果正確10.輸入數字30,由上面的運行結果得知,下圖顯示結果在理論上應該正確11.輸入數字80,由上面的運行結果得知,下圖顯示結果在理論上應該正確11.輸入數字100,由上面的運行結果得知,下圖顯示結果在理論上應該正確實驗總結1.本次實驗的目的是通過對子程序的應用來實現對N!的計算,其特點在于利用子程序將主程序分為幾個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論