




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
./微機(jī)原理課程設(shè)計(jì)說明書題目數(shù)據(jù)段里有一個(gè)N個(gè)字的數(shù)組A,利用冒泡排序法最數(shù)組進(jìn)行從小到大的排序,并輸出結(jié)果。要求:讀出數(shù)據(jù)段中存放的數(shù)組A;換行顯示換行后的數(shù)組A題目分析數(shù)據(jù)段為N個(gè)字,從而了解到該數(shù)據(jù)類型為雙字節(jié),且數(shù)據(jù)段中數(shù)據(jù)個(gè)數(shù)未知。要求對(duì)該數(shù)組進(jìn)行從小到大的排序,且要求用冒泡法進(jìn)行。數(shù)據(jù)段中的數(shù)組A已經(jīng)給定,無需輸入,但是要求將排序前后數(shù)組A顯示出來,且要求換行顯示。軟件流程圖YYYNNI←I+1計(jì)數(shù)2←計(jì)數(shù)2-1計(jì)數(shù)2=0?計(jì)數(shù)2←計(jì)數(shù)2-1計(jì)數(shù)2=0?結(jié)束交換AA<I>和AA〔I+1〕NYAA<I>和AA<I+1>I←0計(jì)數(shù)2←計(jì)數(shù)1開始計(jì)數(shù)1←N-1流程圖設(shè)計(jì)思路說明首先通過調(diào)用自定義子程序printf將數(shù)組A中的數(shù)據(jù)顯示出來,然后在運(yùn)用冒泡法對(duì)數(shù)組中的數(shù)據(jù)進(jìn)行排序,冒泡法排序的總思路是,首先從數(shù)組A中的第一個(gè)元素開始,一次對(duì)相鄰的的兩個(gè)元素進(jìn)行比較,調(diào)整。使前一個(gè)元素不大于后一個(gè)元素,將素有元素比較完之后,最大的元素排到了最后;然后,除掉最后一個(gè)元素之外的元素依上方法再次進(jìn)行比較,得到次大的元素排在后面;如此重復(fù),直至完成就實(shí)現(xiàn)了元素的從小到大的排序。同時(shí)在每一輪的依次比較時(shí),我還設(shè)置了一個(gè)檢測(cè)標(biāo)識(shí),如果哪一輪比較時(shí)沒有進(jìn)行依次調(diào)整,前面的元素都不大于后面的元素。直接結(jié)束排序。最后再次調(diào)用自定義子程序printf將排序后的數(shù)組A顯示出來。程序清單主程序開始部分DATASSEGMENTarrarydw3,2,-1,5,7,4,6,100,895;預(yù)定義需排序數(shù)組lendw<$-arrary>/2flagdb?;交換標(biāo)志,為1表示發(fā)生交換c10dw10;此處輸入數(shù)據(jù)段代碼DATASENDSSTACKSSEGMENT;此處輸入堆棧段代碼STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXcallprint;調(diào)用子程序打印數(shù)組冒泡法排序程序l_out:leabx,arrary;外層循環(huán),flag==1時(shí)進(jìn)入movcx,lendeccxmovflag,0l_in:movdx,[bx];內(nèi)層循環(huán),若元素間逆序,置flag為1cmpdx,[bx+2]jlnextmovdx,[bx]xchgdx,[bx+2]mov[bx],dxmovflag,1next:addbx,2loopl_intestflag,0ffhjnzl_outcallprintmovax,4c00hint21h自定義顯示子程序printfprintprocnearpushbx;將各寄存器其中的數(shù)據(jù)進(jìn)行壓棧pushcxpushaxleabx,arrarymovcx,lenp1:pushcxmovax,[bx]cmpax,0;判斷是否為有符號(hào)或無符號(hào)數(shù)jgep2;正數(shù)部分輸出pushaxmovdl,'-'movah,2int21hpopaxnegaxp2:xorcx,cxp3:xordx,dxdivc10pushdxinccxtestax,0ffhjnzp3;分離各位數(shù)據(jù)p4:popdx調(diào)用系統(tǒng)〔BIOS〕中斷單字符輸出功能ordl,30hmovah,2int21hloopp4;輸出下一位movdl,''movah,2int21haddbx,2popcxloopp1;處理下一數(shù)據(jù)movdl,0ah;換行movah,2int21hmovdl,0dhmovah,2int21hpopax;彈出暫時(shí)保存的數(shù)據(jù)popcxpopbxretprintendp主程序結(jié)束部分MOVAH,4CHINT21HCODESENDSENDSTART設(shè)計(jì)總結(jié)冒泡法因?yàn)橐郧皩W(xué)過C語言接觸過,所以程序設(shè)計(jì)在這一塊比較順利,但到了顯示數(shù)組的時(shí)候遇到了障礙。movdl,待輸出字符的ASCII碼movah,2int21h由于沒有注意到DL中轉(zhuǎn)移的數(shù)據(jù)應(yīng)該是待輸出字符的ASCII碼,所以剛開始沒有將數(shù)組住的元素轉(zhuǎn)換成其相應(yīng)的ASCII碼,所以顯示出錯(cuò),除此之外由于該系統(tǒng)中斷的功能只是輸出單字符,但是數(shù)組A中的數(shù)據(jù)各種各樣,所以當(dāng)數(shù)組A中的數(shù)據(jù)不是單字符是就不能正常的顯示,經(jīng)過思考,聯(lián)想到以前在學(xué)習(xí)C語言時(shí)候分離過一個(gè)三位數(shù)的百位,十位和個(gè)位。當(dāng)即有了想法,我同樣可以將數(shù)組A中的元素各位進(jìn)行分離。所以寫了一段程序Movcx,n;n為循環(huán)次數(shù),即數(shù)據(jù)的位數(shù)Moval,x;x為數(shù)據(jù)One:movah,0Divc10;c10定義其值為10PushaxLoopone但顯然問題又來了,數(shù)組A中元素的位數(shù)也是未知的,x該取何值?又經(jīng)過仔細(xì)思考之后巧妙地設(shè)置了一個(gè)檢測(cè)環(huán)節(jié),每次分離完之后檢測(cè)當(dāng)商和余數(shù)同時(shí)為零是停止分離。從而完美的解決了顯示多位數(shù)的問題。心得體會(huì)通過這次程序設(shè)計(jì),使我對(duì)匯編語言的基本知識(shí)的使用更加熟練,同時(shí)也增加了我對(duì)匯編語言的一些認(rèn)識(shí),在作業(yè)完成過程中通過和同學(xué)的交流,也增加了合作的技巧。通過查閱資料也學(xué)到了一些課本上沒有的東西,拓寬了自己的知識(shí)面,增加了學(xué)好匯編語言的信心。這不是第一次用匯編語言來設(shè)計(jì)一個(gè)小程序,平時(shí)做了很多實(shí)驗(yàn),寫了很多小程序。但這次是一個(gè)綜合的程序,平時(shí)的很多程序都用到了。很多子程序的設(shè)計(jì)是固定的,因此可以直接從指導(dǎo)資料中調(diào)用,大多只需要修改幾個(gè)參數(shù)就可以,這大大方便了我們的設(shè)計(jì),為我們節(jié)省了很多的時(shí)間。在這次課程設(shè)計(jì)中,我真正體會(huì)到了合作的重要性,遇到很多問題時(shí),當(dāng)我看書查資料不能解決時(shí),這是去找同學(xué)討論一下,收獲很大,可以使很多問題迎刃而解,直到問題最終解決。不可否認(rèn),本程序存在不少缺點(diǎn)和不足,但通過這次課程設(shè)計(jì)的卻找出了自己在學(xué)習(xí)上的不足,對(duì)以后的工作也有指導(dǎo)作用。我相信在以后的學(xué)習(xí)中會(huì)克服這些不足,達(dá)到熟練掌握匯編語言的目的!發(fā)現(xiàn)這次程序設(shè)計(jì)之后,我已經(jīng)喜歡上了編程。無論以是匯編還是其他高級(jí)編程語言。我想有了掌握一門編程語言的方法,其他的也不是難
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)上市居間合同范本
- 2025年沈陽貨運(yùn)資格證考試中心
- 農(nóng)資貨物銷售合同范本
- 出售桌球桌子合同范本
- 全手機(jī)購銷合同范本
- 勞動(dòng)解約合同范本
- 劃線施工合同范例
- 《第一單元 參考活動(dòng)1 唱響團(tuán)歌》教學(xué)設(shè)計(jì) -2023-2024學(xué)年初中綜合實(shí)踐活動(dòng)蘇少版八年級(jí)上冊(cè)
- 內(nèi)墻翻新粉刷合同范本
- 3人合伙養(yǎng)殖合同范本
- 復(fù)合材料手糊成型工藝
- 2023可信數(shù)字底座白皮書
- 2022年公務(wù)員多省聯(lián)考《申論》題(四川縣鄉(xiāng)卷)
- 義務(wù)教育階段中小學(xué)學(xué)生轉(zhuǎn)學(xué)申請(qǐng)表
- 公司管理培訓(xùn)《5S管理》精美課件
- 23J916-1:住宅排氣道(一)
- 臨聘人員信息表
- 浙江省溫室氣體清單編制指南
- 普通診所污水、污物、糞便處理方案及周邊環(huán)境情況說明
- 成功人士的七個(gè)習(xí)慣課件
- 粵教版必修二《向心力》評(píng)課稿
評(píng)論
0/150
提交評(píng)論