微機(jī)原理課程設(shè)計說明書_第1頁
微機(jī)原理課程設(shè)計說明書_第2頁
微機(jī)原理課程設(shè)計說明書_第3頁
微機(jī)原理課程設(shè)計說明書_第4頁
微機(jī)原理課程設(shè)計說明書_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理課程設(shè)計說明書題目數(shù)據(jù)段里有一個N個字的數(shù)組A,利用冒泡排序法最數(shù)組進(jìn)行從小到大的排序,并輸出結(jié)果。要求:讀出數(shù)據(jù)段中存放的數(shù)組A;換行顯示換行后的數(shù)組A題目分析數(shù)據(jù)段為N個字,從而了解到該數(shù)據(jù)類型為雙字節(jié),且數(shù)據(jù)段中數(shù)據(jù)個數(shù)未知。要求對該數(shù)組進(jìn)行從小到大的排序,且要求用冒泡法進(jìn)行。數(shù)據(jù)段中的數(shù)組A已經(jīng)給定,無需輸入,但是要求將排序前后數(shù)組A顯示出來,且要求換行顯示。軟件流程圖YYNNII+1計數(shù)2計數(shù)2-1計數(shù)2=0?計數(shù)2計數(shù)2-1計數(shù)2=0?結(jié)束交換AA(I)和AA(I+1)NYAA(I) 和AA(I+1)I0計數(shù)2計數(shù)1開始計數(shù)1N-1流程圖設(shè)計思路說明首先通過調(diào)用自定義子程序

2、printf將數(shù)組A中的數(shù)據(jù)顯示出來,然后在運用冒泡法對數(shù)組中的數(shù)據(jù)進(jìn)行排序,冒泡法排序的總思路是,首先從數(shù)組A中的第一個元素開始,一次對相鄰的的兩個元素進(jìn)行比較,調(diào)整。使前一個元素不大于后一個元素,將素有元素比較完之后,最大的元素排到了最后;然后,除掉最后一個元素之外的元素依上方法再次進(jìn)行比較,得到次大的元素排在后面;如此重復(fù),直至完成就實現(xiàn)了元素的從小到大的排序。同時在每一輪的依次比較時,我還設(shè)置了一個檢測標(biāo)識,如果哪一輪比較時沒有進(jìn)行依次調(diào)整,前面的元素都不大于后面的元素。直接結(jié)束排序。最后再次調(diào)用自定義子程序printf將排序后的數(shù)組A顯示出來。程序清單主程序開始部分DATAS SEG

3、MENT arrary dw 3,2,-1,5,7,4,6,100,895;預(yù)定義需排序數(shù)組 len dw ($-arrary)/2 flag db ?;交換標(biāo)志,為1表示發(fā)生交換 c10 dw 10 ;此處輸入數(shù)據(jù)段代碼 DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX call print;調(diào)用子程序打印數(shù)組冒泡法排序程序l_out:lea bx,arrary;外層循環(huán),flag=1時進(jìn)入 mo

4、v cx,len dec cx mov flag,0l_in: mov dx,bx;內(nèi)層循環(huán),若元素間逆序,置flag為1 cmp dx,bx+2 jl next mov dx,bx xchg dx,bx+2 mov bx,dx mov flag,1next: add bx,2 loop l_in test flag,0ffh jnz l_out call print mov ax,4c00h int 21h自定義顯示子程序printfprint proc near push bx;將各寄存器其中的數(shù)據(jù)進(jìn)行壓棧 push cx push ax lea bx,arrary mov cx,lenp

5、1: push cx mov ax,bx cmp ax,0;判斷是否為有符號或無符號數(shù) jge p2;正數(shù)部分輸出 push ax mov dl,'-' mov ah,2 int 21h pop ax neg axp2: xor cx,cxp3: xor dx,dx div c10 push dx inc cx test ax,0ffh jnz p3;分離各位數(shù)據(jù)p4: pop dx 調(diào)用系統(tǒng)(BIOS)中斷單字符輸出功能 or dl,30h mov ah,2 int 21h loop p4;輸出下一位 mov dl,' ' mov ah,2 int 21h a

6、dd bx,2 pop cx loop p1;處理下一數(shù)據(jù) mov dl,0ah;換行 mov ah,2 int 21h mov dl,0dh mov ah,2 int 21h pop ax;彈出暫時保存的數(shù)據(jù) pop cx pop bx retprint endp主程序結(jié)束部分 MOV AH,4CH INT 21HCODES ENDS END START設(shè)計總結(jié)冒泡法因為以前學(xué)過C語言接觸過,所以程序設(shè)計在這一塊比較順利,但到了顯示數(shù)組的時候遇到了障礙。mov dl,待輸出字符的ASCII 碼 mov ah,2 int 21h由于沒有注意到DL 中轉(zhuǎn)移的數(shù)據(jù)應(yīng)該是待輸出字符的ASCII碼,所

7、以剛開始沒有將數(shù)組住的元素轉(zhuǎn)換成其相應(yīng)的ASCII碼,所以顯示出錯,除此之外由于該系統(tǒng)中斷的功能只是輸出單字符,但是數(shù)組A中的數(shù)據(jù)各種各樣,所以當(dāng)數(shù)組A中的數(shù)據(jù)不是單字符是就不能正常的顯示,經(jīng)過思考,聯(lián)想到以前在學(xué)習(xí)C語言時候分離過一個三位數(shù)的百位,十位和個位。當(dāng)即有了想法,我同樣可以將數(shù)組A中的元素各位進(jìn)行分離。所以寫了一段程序Mov cx ,n;n為循環(huán)次數(shù),即數(shù)據(jù)的位數(shù)Mov al,x;x為數(shù)據(jù)One:mov ah,0 Div c10;c10定義其值為10 Push ax Loop one但顯然問題又來了,數(shù)組A中元素的位數(shù)也是未知的,x該取何值?又經(jīng)過仔細(xì)思考之后巧妙地設(shè)置了一個檢測環(huán)

8、節(jié),每次分離完之后檢測當(dāng)商和余數(shù)同時為零是停止分離。從而完美的解決了顯示多位數(shù)的問題。心得體會通過這次程序設(shè)計,使我對匯編語言的基本知識的使用更加熟練,同時也增加了我對匯編語言的一些認(rèn)識,在作業(yè)完成過程中通過和同學(xué)的交流,也增加了合作的技巧。通過查閱資料也學(xué)到了一些課本上沒有的東西,拓寬了自己的知識面,增加了學(xué)好匯編語言的信心。 這不是第一次用匯編語言來設(shè)計一個小程序,平時做了很多實驗,寫了很多小程序。但這次是一個綜合的程序,平時的很多程序都用到了。很多子程序的設(shè)計是固定的,因此可以直接從指導(dǎo)資料中調(diào)用,大多只需要修改幾個參數(shù)就可以,這大大方便了我們的設(shè)計,為我們節(jié)省了很多的時間。 在這次課程設(shè)計中,我真正體會到了合作的重要性,遇到很多問題時,當(dāng)我看書查資料不能解決時,這是去找同學(xué)討論一下,收獲很大,可以使很多問題迎刃而解,直到問題最終解決。 不可否認(rèn),本程序存在不少缺點和不足,但通過這次課程設(shè)計的卻找出了自己在學(xué)習(xí)上的不足,對以后的工作也有指導(dǎo)作用。我相信在以后的學(xué)習(xí)中會克服這些不足,達(dá)到熟練掌握匯編語言的目的!發(fā)現(xiàn)這次程序設(shè)計之后,我已經(jīng)喜歡上了編程。無論以是匯編還是其他高級編程語言。我想有了掌握一門編程語言的方法,其他的也不是難題。參考文獻(xiàn)A. 數(shù)字電子與微型計

溫馨提示

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

評論

0/150

提交評論