匯編課程設(shè)計(jì)報(bào)告_第1頁
匯編課程設(shè)計(jì)報(bào)告_第2頁
匯編課程設(shè)計(jì)報(bào)告_第3頁
匯編課程設(shè)計(jì)報(bào)告_第4頁
匯編課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2020年4月19日匯編課程設(shè)計(jì)報(bào)告文檔僅供參考,不當(dāng)之處,請(qǐng)聯(lián)系改正。學(xué) 號(hào): 課 程 設(shè) 計(jì)題 目打印水仙花數(shù)學(xué) 院計(jì)算機(jī)科學(xué)與技術(shù)專 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班 級(jí)姓 名指導(dǎo)教師 年6月28日課程設(shè)計(jì)任務(wù)書學(xué)生姓名: 專業(yè)班級(jí): 指導(dǎo)教師: 工作單位:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 題目: 打印水仙花數(shù)初始條件:理論:完成了匯編語言程序設(shè)計(jì)課程,對(duì)微機(jī)系統(tǒng)結(jié)構(gòu)和80系列指令系統(tǒng)有了較深入的理解,已掌握了匯編語言程序設(shè)計(jì)的基本方法和技巧。實(shí)踐:完成了匯編語言程序設(shè)計(jì)的4個(gè)實(shí)驗(yàn),熟悉了匯編語言程序的設(shè)計(jì)環(huán)境并掌握了匯編語言程序的調(diào)試方法。要求完成的主要任務(wù): (包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說明書撰寫

2、等具體要求)進(jìn)一步理解和掌握較復(fù)雜程序的設(shè)計(jì)方法,掌握子程序結(jié)構(gòu)的設(shè)計(jì)和友好用戶界面的設(shè)計(jì)。具體的設(shè)計(jì)任務(wù)及要求:輸入一個(gè)大整數(shù)n;將小于n的水仙花數(shù)打印出來(各位數(shù)字的立方和等于該數(shù)本身);程序采用子程序結(jié)構(gòu),結(jié)構(gòu)清晰;友好清晰的用戶界面,能識(shí)別輸入錯(cuò)誤并控制錯(cuò)誤的修改。在完成設(shè)計(jì)任務(wù)后,按要求撰寫課程設(shè)計(jì)說明書;對(duì)課程設(shè)計(jì)說明書的具體要求請(qǐng)見課程設(shè)計(jì)指導(dǎo)書。閱讀資料:1)IBMPC匯編語言程序設(shè)計(jì)實(shí)驗(yàn)教程實(shí)驗(yàn)2.42)IBMPC匯編語言程序設(shè)計(jì)(第2版)例6.11時(shí)間安排:設(shè)計(jì)安排一周:周1、周2:完成系統(tǒng)分析及設(shè)計(jì)。周3、周4:完成程序調(diào)試,和驗(yàn)收。周5:撰寫課程設(shè)計(jì)報(bào)告。指導(dǎo)教師簽名:

3、 月 日系主任(或責(zé)任教師)簽名: 月 日打印水仙花數(shù)需求說明 1.1設(shè)計(jì)要求: 進(jìn)一步理解和掌握較復(fù)雜程序的設(shè)計(jì)方法,掌握子程序結(jié)構(gòu)的設(shè)計(jì)和友好用戶界面的設(shè)計(jì)。具體的設(shè)計(jì)任務(wù)及要求:1.輸入一個(gè)三位整數(shù)n;2.將小于n的水仙花數(shù)打印出來(各位數(shù)字的立方和等于該數(shù)本身);3.程序采用子程序結(jié)構(gòu),結(jié)構(gòu)清晰;4.友好清晰的用戶界面,能識(shí)別輸入錯(cuò)誤并控制錯(cuò)誤的修改。 1.2設(shè)計(jì)說明 所謂“水仙花數(shù)”是指一個(gè)3位數(shù),其個(gè)、十、百位數(shù)字的立方和等于其本身。 1.3功能簡述 程序能夠輸入一個(gè)三位數(shù),若輸入有誤則提示錯(cuò)誤,并提示重新輸入,若輸入正確,系統(tǒng)將顯示出所有大于等于100,而且小于等于輸入數(shù)字的水仙

4、花數(shù)。 然后提示是否繼續(xù),若用戶輸入y或Y,則系統(tǒng)回到最開始的狀態(tài),若輸入n或N,則退出系統(tǒng),若為其它則提示錯(cuò)誤,并重新輸入。設(shè)計(jì)說明(簡要的分析與概要設(shè)計(jì)) 2.1簡要分析 2.1.1原理說明 能夠用標(biāo)簽來接收三位數(shù),標(biāo)簽的好處在于能夠限制輸入的位數(shù),而且經(jīng)過實(shí)際輸入位數(shù)能夠直接進(jìn)行一部分的異常處理。將數(shù)存到標(biāo)簽后,因?yàn)槭且訟SCII碼的形式存的,因此需要進(jìn)行轉(zhuǎn)換,將其變成十六進(jìn)制數(shù),轉(zhuǎn)換后將數(shù)字存到申請(qǐng)的內(nèi)存字中。在轉(zhuǎn)換成十六進(jìn)制數(shù)的過程中,能夠?qū)斎氲臄?shù)進(jìn)行異常處理,判斷是否輸入有誤。在輸出水仙花數(shù)時(shí),設(shè)置一個(gè)計(jì)數(shù)器,從100開始循環(huán)判斷,直到等于用戶輸入的數(shù)為止,依次判斷是否為水仙花數(shù)

5、,決定是否輸出該數(shù)。在輸出時(shí),分別取出水仙花數(shù)的個(gè)、十、百位數(shù),轉(zhuǎn)換成ASCII碼再輸出。系統(tǒng)提示是否繼續(xù)后,程序?qū)τ脩糨斎氲男畔⑦M(jìn)行判斷,若為y或Y則系統(tǒng)回到初始狀態(tài),若為n或N則退出系統(tǒng),若為其它則提示輸入錯(cuò)誤并重新輸入。 2.1.2程序流程圖 開始 輸入一個(gè)三位數(shù)n輸入錯(cuò)誤輸入正確輸出100=X=n的水仙花數(shù) 是否繼續(xù)輸入y或Y輸入其它輸入n或N結(jié)束2.2 數(shù)據(jù)段設(shè)計(jì)data segmentmess1 db 0dh,0ah,Please input a nubmer (100=number=999):,$mess2 db 0dh,0ah,Do you want to continue(y

6、/n)? ,$mess3 db 0dh,0ah,shuixianhuashu:,0ah,$error db 0dh,0ah,Input error,please input again!,$numpar label bytemax db 4act db ?numfld db 4 dup(?);存放輸入的字符串,設(shè)定了最大長度,避免錯(cuò)誤。real dw ? ;用于存放轉(zhuǎn)換后的十六進(jìn)制數(shù)data ends子程序設(shè)計(jì)與描述 3.1輸入一個(gè)三位數(shù): ;input a numbernum proc near lea dx,mess1 mov ah,9 int 21h mov ah,0ah lea dx,

7、numpar int 21h call convert retnum endp3.2 將輸入的數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)制數(shù)并進(jìn)行異常處理:convert proc near mov bx,0 mov dx,0 mov ax,0 cmp act,3 ;判斷是否為三位數(shù) jne err mov bl,numfld2 ;判斷個(gè)位是否為19 cmp bl,2fh jbe err cmp bl,3ah jge err sub bl,30h mov al,numfld1 ;判斷十位是否為09 cmp al,2fh jbe err cmp al,3ah jge err sub al,30h mov dh,10 mu

8、l dh add bl,al mov al,numfld0 ;判斷百位是否為09 cmp al,30h jbe err cmp al,3ah jge err sub al,30h mov dh,100 mul dh add ax,bx mov real,ax ;將轉(zhuǎn)換后的十六進(jìn)制數(shù)存到內(nèi)存中 jmp exterr: ;錯(cuò)誤處理 lea dx,error mov ah,9 int 21h call num ext: retconvert endp3.2 判斷是否為水仙花數(shù)并輸出結(jié)果( display子程序) ;display shuixianhuashudisplay proc near lea

9、 dx,mess3 mov ah,9 int 21h mov cx,100 cmp3: mov ax,cx ;將百位數(shù)的立方存入bx中 mov dh,100 div dh mov dh,al mul dh mul dh mov bx,ax mov ax,cx ;將十位數(shù)的立方加到bx中 mov dh,10 div dh mov ah,0 div dh mov al,ah mov dh,ah mul dh mul dh add bx,ax mov ax,cx ;將個(gè)位數(shù)的立方加到bx中 mov dh,10 div dh mov al,ah mov dh,ah mul dh mul dh add

10、bx,ax mov dx,cx ;若是水仙花數(shù)則跳轉(zhuǎn)到print cmp dx,bx je print mov ax,real ;若等于用戶輸入的數(shù)據(jù)則終止 cmp cx,ax je stop inc cx ;否則計(jì)數(shù)器加一繼續(xù)比較 jmp cmp3 print: mov ax,bx ;打印百位 mov dh,100 div dh mov dl,al add dl,30h mov ah,2 int 21h mov ax,bx ;打印十位 mov dh,10 div dh mov ah,0 div dh mov dl,ah add dl,30h mov ah,2 int 21h mov ax,b

11、x ;打印個(gè)位 div dh mov dl,ah add dl,30h mov ah,2 int 21h mov dl,20h int 21h mov ax,real cmp ax,cx je stop inc cx jmp cmp3 stop: retdisplay endp 4.源程序與執(zhí)行結(jié)果 4.1源程序代碼 data segmentmess1 db 0dh,0ah,Please input a nubmer(100=number=999):,$ ;提示輸入一個(gè)三位數(shù)mess2 db 0dh,0ah,Do you want to continue(y/n)? ,$;提示是否繼續(xù)mess

12、3 db 0dh,0ah,shuixianhuashu:,0ah,$;提示輸出水仙花數(shù)error db 0dh,0ah,Input error,please input again!,$;出錯(cuò)信息numpar label bytemax db 4act db ?numfld db 4 dup(?);存放輸入的字符串,設(shè)定了最大長度,避免錯(cuò)誤。real dw ?;用于存放轉(zhuǎn)換后的十六進(jìn)制數(shù)data endscode segment assume ds:data,cs:codemain proc farstart: mov ax,data mov ds,axgo: call num call di

13、splayagain: lea dx,mess2 mov ah,9 int 21h mov ah,1 int 21h cmp al,89 je go cmp al,121 je go cmp al,78 je exit cmp al,110 je exit lea dx,error mov ah,9 int 21h jmp againexit: mov ah,4ch int 21hmain endp; ;input a number;輸入一個(gè)三位數(shù)num proc near lea dx,mess1 mov ah,9 int 21h mov ah,0ah lea dx,numpar int 2

14、1h call convert retnum endp; ;convert decimal to hexadecimal ;store to real;將輸入的數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)制數(shù)并進(jìn)行異常處理convert proc near mov bx,0 mov dx,0 mov ax,0 cmp act,3 ;判斷是否為三位數(shù) jne err mov bl,numfld2 ;判斷個(gè)位是否為09 cmp bl,2fh jbe err cmp bl,3ah jge err sub bl,30h mov al,numfld1 ;判斷十位是否為09 cmp al,2fh jbe err cmp al,3ah

15、 jge err sub al,30h mov dh,10 mul dh add bl,al mov al,numfld0 ;判斷百位是否為19 cmp al,30h jbe err cmp al,3ah jge err sub al,30h mov dh,100 mul dh add ax,bx mov real,ax ;將轉(zhuǎn)換后的十六進(jìn)制數(shù)存到內(nèi)存中 jmp exterr: ;錯(cuò)誤處理 lea dx,error mov ah,9 int 21h call num ext: retconvert endp; ;display shuixianhuashu;判斷是否為水仙花數(shù)并輸出結(jié)果disp

16、lay proc near lea dx,mess3 mov ah,9 int 21h mov cx,100 cmp3: mov ax,cx ;將百位數(shù)的立方存入bx中 mov dh,100 div dh mov dh,al mul dh mul dh mov bx,ax mov ax,cx ;將十位數(shù)的立方加到bx中 mov dh,10 div dh mov ah,0 div dh mov al,ah mov dh,ah mul dh mul dh add bx,ax mov ax,cx ;將個(gè)位數(shù)的立方加到bx中 mov dh,10 div dh mov al,ah mov dh,ah m

17、ul dh mul dh add bx,ax mov dx,cx ;若是水仙花數(shù)則跳轉(zhuǎn)到print cmp dx,bx je print mov ax,real ;若等于用戶輸入的數(shù)據(jù)則終止 cmp cx,ax je stop inc cx ;否則計(jì)數(shù)器加一繼續(xù)比較 jmp cmp3 print: mov ax,bx ;打印百位 mov dh,100 div dh mov dl,al add dl,30h mov ah,2 int 21h mov ax,bx ;打印十位 mov dh,10 div dh mov ah,0 div dh mov dl,ah add dl,30h mov ah,2

18、 int 21h mov ax,bx ;打印個(gè)位 div dh mov dl,ah add dl,30h mov ah,2 int 21h mov dl,20h int 21h mov ax,real cmp ax,cx je stop inc cx jmp cmp3 stop: retdisplay endp ;code ends end start 4.2 測試方法 4.2.1 測試用例 輸入數(shù)字:錯(cuò)誤輸入12錯(cuò)誤輸入045正確輸入265 是否繼續(xù):錯(cuò)誤輸入1錯(cuò)誤輸入t正確輸入y正確輸入n4.2.2 測試結(jié)果5.總結(jié) 5.1不足 本程序只是針對(duì)了三位數(shù)進(jìn)行設(shè)計(jì),對(duì)于四位數(shù)進(jìn)行過設(shè)計(jì),但沒法正確輸出,最后只完成了判斷輸出三位數(shù)的水仙花數(shù),因此在功能上有所不足,只是實(shí)現(xiàn)了最基本的判斷三位數(shù)是否為水仙花數(shù)而且輸出。 5.2收獲與體會(huì)在編程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論