微機(jī)原理與接口技術(shù)實(shí)驗(yàn)-冒泡法_第1頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)-冒泡法_第2頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)-冒泡法_第3頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)-冒泡法_第4頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)-冒泡法_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

微機(jī)原理與接口技術(shù)實(shí)驗(yàn)——冒泡法微機(jī)原理與接口技術(shù)實(shí)驗(yàn)——冒泡法微機(jī)原理與接口技術(shù)實(shí)驗(yàn)——冒泡法xxx公司微機(jī)原理與接口技術(shù)實(shí)驗(yàn)——冒泡法文件編號(hào):文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計(jì),管理制度實(shí)驗(yàn)內(nèi)容用“冒泡“法對(duì)一組數(shù)300,250,280,240,260,按從小到大的順序排列。提示:用冒泡的方法對(duì)一組數(shù)據(jù)元素排序,它的基本方法是:將相鄰的兩個(gè)元素通過(guò)比較進(jìn)行排序,通過(guò)多次,多遍的鄰元素排序,實(shí)現(xiàn)整個(gè)一組數(shù)的排序。對(duì)于5(N)個(gè)元素,整個(gè)排序通過(guò)4遍(=N-1)鄰元素排序完成。每一遍的排序由若干次鄰元素的排序組成。4遍排序中,鄰元素的排序依次為4,3,2,1遍。完成第一遍排序后,最大數(shù)沉底,已經(jīng)到達(dá)它應(yīng)占據(jù)的位置,不需要參加下一遍的排序。外循環(huán)的次數(shù)為CX=4次(N-1),內(nèi)循環(huán)的次數(shù)為4,3,2,1(DECCX)排序遍數(shù)本遍排序前第一次排序后第二次排序后第三次排序后第四次排序后1300,250,280,240,260250,300,280,240,260250,280,300,240,260250,280,240,300,260250,280,240,260,3002250,280,240,260,300250,280,240,260,300250,240,280,260,300250,240,260,280,3003250,240,260,280,300250,240,260,280,300240,250,260,280,3004240,250,260,280,300240,250,260,280,300實(shí)驗(yàn)要求:1.編制程序,對(duì)這組數(shù)進(jìn)行排序,并輸出原數(shù)據(jù)及排序后數(shù)據(jù);2.利用DEBUG調(diào)試工具,用D0(是D零命令)命令,查看排序前后,內(nèi)存數(shù)據(jù)的變化;3.去掉最大和最小的兩個(gè)值,求出其余值的平均值,并輸出最大值,最小值和平均值;4.用學(xué)過(guò)的壓棧PUSH和出棧POP指令,將平均值按位逐個(gè)輸出(即輸出263);5將平均值263轉(zhuǎn)化為二進(jìn)制串,并將這組二進(jìn)制串輸出。6.所有數(shù)據(jù)輸出前要用字符串的輸出指令,進(jìn)行輸出提示(如:zuidazhishi:300等),所有數(shù)據(jù)結(jié)果能清晰地顯示在屏幕上。程序清單及流程圖冒泡法:DATASEGMENT;定義數(shù)據(jù)段VARDW300,250,280,240,260;定義待排序的量NEQU$-VAR;占內(nèi)存空間的大小,是次數(shù)的兩倍;因?yàn)檫@是字定義EJDW;給平均值預(yù)留存儲(chǔ)空間YSSJDB'yuanshishujujilushi:$';原始數(shù)據(jù)的輸出提示PXHDB0DH,0AH,'paixuhoudeshujujilushi:$';排序后的輸出;提示MAXSDB0DH,0AH,'zuidazhishi:$';最大值輸出提示MINSDB0DH,0AH,'zuixiaozhishi:$';最小值輸出提示EQSDB0DH,0AH,'pingjunzhishi:$';平均值10進(jìn)制輸出提示EQEDB0DH,0AH,'pingjunshudeerjinzhidaimashi:$';平均值;的二進(jìn)制數(shù)制的輸出提示DATAENDS;定義堆棧段STACKSEGMENTPARASTACK'STACK'STAPNDW200DUP()STACKENDS;定義代碼段CODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACK;定義各代碼段,數(shù)據(jù)段,堆棧段;初始化START:MOVAX,DATAMOVDS,AXMOVCX,N-2;原始數(shù)據(jù)顯示MOVDX,OFFSETYSSJ;顯示‘原始數(shù)據(jù)的輸出提示’的字符串,下同MOVAH,9;系統(tǒng)調(diào)用09H號(hào)功能,輸出字符串INT21HMOVCX,N;輸出原始數(shù)據(jù)循環(huán)初值MOVDX,10;DX的初始化MOVSI,0;變量的偏移量0,2,4,6,8XSX:MOVAX,VAR[SI];將變量依次取出,逐個(gè)顯示CALLXSXH;調(diào)用顯示子程序ADDSI,2;改變變量的偏移量DECCX;改變CX,結(jié)束循環(huán)LOOPXSX;冒泡算法MOVCX,N-2WXH:PUSHCXMOVSI,0NXH:MOVAX,VAR[SI];暫存當(dāng)前內(nèi)存中的數(shù)據(jù),一個(gè)字變量CMPAX,VAR[SI+2];與下一內(nèi)存中的字變量比較JLENXF;如果前一字變量不大于后一字變量,不做交換,;直接修改偏移地址XCHGAX,VAR[SI+2];該項(xiàng)SI值并不改變XCHGAX,VAR[SI];交換,將較大值往后移NXF:ADDSI,2;改變偏移量,將所有數(shù)比較完DECCX;實(shí)現(xiàn)內(nèi)層循環(huán)LOOPNXHPOPCX;改變外層循環(huán)次數(shù)DECCX;外層循環(huán)次數(shù)遞減LOOPWXH;排序后的數(shù)據(jù)顯示(同原始數(shù)據(jù)顯示)MOVDX,OFFSETPXH;顯示‘排序后數(shù)據(jù)的輸出提示’的字符串MOVAH,9;字符串顯示INT21HMOVCX,NMOVDX,0MOVSI,0XSH:MOVAX,VAR[SI]CALLXSXH;調(diào)用顯示子程序ADDSI,2DECCXLOOPXSH;最小值輸出顯示MOVDX,OFFSETMINSMOVAH,9INT21HMOVSI,0MOVAX,VAR[SI];最小值是排序后該片內(nèi)存中偏移量為0的數(shù)值CALLXSXH;最大值輸出顯示,最大值的偏移量與定義的類型及個(gè)數(shù)有關(guān)MOVDX,OFFSETMAXSMOVAH,9INT21HMOVAX,VAR[SI+8];最大值是該片內(nèi)存中偏移量最大為N-2的值CALLXSXH;求平均值MOVDX,0MOVCX,2;保存求和的個(gè)數(shù),此處去掉最大最小值,個(gè)數(shù)為;N/2-2MOVSI,2;暫存求和起始偏移量,此處為2,不排最小值MOVAX,VAR[SI]QH:ADDSI,2ADDAX,VAR[SI]LOOPQH;此循環(huán)用來(lái)求取排完序后的和MOVBX,3CWD;擴(kuò)展,求平均值,此處平均值大于255IDIVBX;余數(shù)在DX,商在AXMOVEJ,AX;將平均值(即商)寫入內(nèi)存,備用;使用PUSH,POP功能實(shí)現(xiàn)顯示10進(jìn)制的平均值MOVDX,OFFSETEQSMOVAH,9INT21H;輸出相應(yīng)提示字符串MOVAX,[EJ];將平均值寫入寄存器,進(jìn)行處理MOVBL,10;先取最低位IDIVBLMOVDL,AH;余數(shù)在高位,給DX暫存PUSHDX;最低位先壓棧ANDAX,00FFH;將余數(shù)清0,保留商,再次取余IDIVBL;此前為變BL值,再次取余,的次低位MOVDL,AH;將余數(shù)給DL暫存PUSHDX;次低位壓棧MOVDL,AL;此例僅3為,若有更高位,繼續(xù)上述處理PUSHDX;最高位壓棧MOVCX,3;CX存十進(jìn)制數(shù)的位數(shù)XHSC:POPDXADDDL,30HMOVAH,02HINT21HLOOPXHSC;依次彈出最高位,次高位,最低位,并逐一顯示;將平均值轉(zhuǎn)換為二進(jìn)制顯出MOVDX,OFFSETEQEMOVAH,9INT21H;輸出相應(yīng)提示字符串MOVBX,[EJ];將平均值寫入BX寄存器進(jìn)行處理MOVCX,16;循環(huán)次數(shù),與定義的類型相關(guān),一個(gè)字節(jié)8次XHYW:ROLBX,1;循環(huán)左移,依次取最低位MOVDL,BL;數(shù)據(jù)暫存ANDDL,01H;取最低位,其余清0ADDDL,30HMOVAH,02HINT21HLOOPXHYW;依次顯示各位;算法結(jié)束,回歸系統(tǒng)MOVAH,4CHINT21H;顯示子程序僅用于顯示,此處不使用堆棧,XSXHPROCMOVBL,100;這里取最高位,數(shù)值100與位數(shù)有關(guān),若有4位,則為1000IDIVBL;除法,得余數(shù)和商MOVDX,AX;高余低商,故將商給DX,取最高位,商只有一位PUSHDX;保護(hù)DXADDDL,30HMOVAH,02HINT21H;顯示最高位POPDXMOVAL,DHANDAX,00FFH;將余數(shù)位清0,以免影響結(jié)果MOVBL,10IDIVBLMOVDX,AXPUSHDXADDDL,30HMOVAH,02HINT21H;顯示次高位POPDXMOVDL,DHADDDL,30HMOVAH,02HINT21H;顯示最低位,若有更高位與上述方法一致MOVDL,2CH;AH此處未變INT21HRETXSXHENDPCODE ENDS;代碼段結(jié)束 END START;源程序結(jié)束流程圖:開始開始顯示yuanshishujujilushi的字符串設(shè)置循環(huán)初值依次取出變量顯示改變變量偏移量,改變CX調(diào)用子程序顯示暫存當(dāng)前字變量與下一變量比較確定是否交換循環(huán)進(jìn)行變量比較字符串paixuhoudeshujujilushi輸出最大最小值取出顯示去掉最大最小值求平均值并輸出CX=0?NYU子程序取最高位進(jìn)行除法顯示最高位余數(shù)置零顯示次高位顯示最低位結(jié)束調(diào)用子程序?qū)⑵骄低ㄟ^(guò)左移轉(zhuǎn)換為二進(jìn)制數(shù)輸出結(jié)束運(yùn)行結(jié)果yuanshishujujilushi:300,250,280,240,260,paixuhoudeshujujilushi:240,250,260,280,300,zuixiao

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論