微機原理及接口技術實驗-冒泡法_第1頁
微機原理及接口技術實驗-冒泡法_第2頁
微機原理及接口技術實驗-冒泡法_第3頁
微機原理及接口技術實驗-冒泡法_第4頁
微機原理及接口技術實驗-冒泡法_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

.z.實驗內容用"冒泡"法對一組數300,250,280,240,260,按從小到大的順序排列。提示:用冒泡的方法對一組數據元素排序,它的根本方法是:將相鄰的兩個元素通過比擬進展排序,通過屢次,多遍的鄰元素排序,實現整個一組數的排序。對于5〔N〕個元素,整個排序通過4遍〔=N-1〕鄰元素排序完成。每一遍的排序由假設干次鄰元素的排序組成。4遍排序中,鄰元素的排序依次為4,3,2,1遍。完成第一遍排序后,最大數沉底,已經到達它應占據的位置,不需要參加下一遍的排序。外循環(huán)的次數為C*=4次(N-1),內循環(huán)的次數為4,3,2,1(DECC*)排序遍數本遍排序前第一次排序后第二次排序后第三次排序后第四次排序后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實驗要求:1.編制程序,對這組數進展排序,并輸出原數據及排序后數據;2.利用DEBUG調試工具,用D0(是D零命令)命令,查看排序前后,內存數據的變化;3.去掉最大和最小的兩個值,求出其余值的平均值,并輸出最大值,最小值和平均值;4.用學過的壓棧PUSH和出棧POP指令,將平均值按位逐個輸出(即輸出263);5將平均值263轉化為二進制串,并將這組二進制串輸出。6.所有數據輸出前要用字符串的輸出指令,進展輸出提示〔如:zuidazhishi:300等〕,所有數據結果能清晰地顯示在屏幕上。程序清單及流程圖冒泡法:DATASEGMENT;定義數據段VARDW300,250,280,240,260;定義待排序的量NEQU$-VAR;占內存空間的大小,是次數的兩倍;因為這是字定義EJDW";給平均值預留存儲空間YSSJDB'yuanshishujujilushi:$';原始數據的輸出提示P*HDB0DH,0AH,'pai*uhoudeshujujilushi:$';排序后的輸出;提示MA*SDB0DH,0AH,'zuidazhishi:$';最大值輸出提示MINSDB0DH,0AH,'zui*iaozhishi:$';最小值輸出提示EQSDB0DH,0AH,'pingjunzhishi:$';平均值10進制輸出提示EQEDB0DH,0AH,'pingjunshudeerjinzhidaimashi:$';平均值;的二進制數制的輸出提示DATAENDS;定義堆棧段STACKSEGMENTPARASTACK'STACK'STAPNDW200DUP(")STACKENDS;定義代碼段CODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACK;定義各代碼段,數據段,堆棧段;初始化START:MOVA*,DATAMOVDS,A*MOVC*,N-2;原始數據顯示MOVD*,OFFSETYSSJ;顯示‘原始數據的輸出提示’的字符串,下同MOVAH,9;系統(tǒng)調用09H號功能,輸出字符串INT21HMOVC*,N;輸出原始數據循環(huán)初值MOVD*,10;D*的初始化MOVSI,0;變量的偏移量0,2,4,6,8*S*:MOVA*,VAR[SI];將變量依次取出,逐個顯示CALL*S*H;調用顯示子程序ADDSI,2;改變變量的偏移量DECC*;改變C*,完畢循環(huán)LOOP*S*;冒泡算法MOVC*,N-2W*H:PUSHC*MOVSI,0N*H:MOVA*,VAR[SI];暫存當前內存中的數據,一個字變量CMPA*,VAR[SI+2];與下一內存中的字變量比擬JLEN*F;如果前一字變量不大于后一字變量,不做交換,;直接修改偏移地址*CHGA*,VAR[SI+2];該項SI值并不改變*CHGA*,VAR[SI];交換,將較大值往后移N*F:ADDSI,2;改變偏移量,將所有數比擬完DECC*;實現內層循環(huán)LOOPN*HPOPC*;改變外層循環(huán)次數DECC*;外層循環(huán)次數遞減LOOPW*H;排序后的數據顯示〔同原始數據顯示〕MOVD*,OFFSETP*H;顯示‘排序后數據的輸出提示’的字符串MOVAH,9;字符串顯示INT21HMOVC*,NMOVD*,0MOVSI,0*SH:MOVA*,VAR[SI]CALL*S*H;調用顯示子程序ADDSI,2DECC*LOOP*SH;最小值輸出顯示MOVD*,OFFSETMINSMOVAH,9INT21HMOVSI,0MOVA*,VAR[SI];最小值是排序后該片內存中偏移量為0的數值CALL*S*H;最大值輸出顯示,最大值的偏移量與定義的類型及個數有關MOVD*,OFFSETMA*SMOVAH,9INT21HMOVA*,VAR[SI+8];最大值是該片內存中偏移量最大為N-2的值CALL*S*H;求平均值MOVD*,0MOVC*,2;保存求和的個數,此處去掉最大最小值,個數為;N/2-2MOVSI,2;暫存求和起始偏移量,此處為2,不排最小值MOVA*,VAR[SI]QH:ADDSI,2ADDA*,VAR[SI]LOOPQH;此循環(huán)用來求取排完序后的和MOVB*,3CWD;擴展,求平均值,此處平均值大于255IDIVB*;余數在D*,商在A*MOVEJ,A*;將平均值〔即商)寫入內存,備用;使用PUSH,POP功能實現顯示10進制的平均值MOVD*,OFFSETEQSMOVAH,9INT21H;輸出相應提示字符串MOVA*,[EJ];將平均值寫入存放器,進展處理MOVBL,10;先取最低位IDIVBLMOVDL,AH;余數在高位,給D*暫存PUSHD*;最低位先壓棧ANDA*,00FFH;將余數清0,保存商,再次取余IDIVBL;此前為變BL值,再次取余,的次低位MOVDL,AH;將余數給DL暫存PUSHD*;次低位壓棧MOVDL,AL;此例僅3為,假設有更高位,繼續(xù)上述處理PUSHD*;最高位壓棧MOVC*,3;C*存十進制數的位數*HSC:POPD*ADDDL,30HMOVAH,02HINT21HLOOP*HSC;依次彈出最高位,次高位,最低位,并逐一顯示;將平均值轉換為二進制顯出MOVD*,OFFSETEQEMOVAH,9INT21H;輸出相應提示字符串MOVB*,[EJ];將平均值寫入B*存放器進展處理MOVC*,16;循環(huán)次數,與定義的類型相關,一個字節(jié)8次*HYW:ROLB*,1;循環(huán)左移,依次取最低位MOVDL,BL;數據暫存ANDDL,01H;取最低位,其余清0ADDDL,30HMOVAH,02HINT21HLOOP*HYW;依次顯示各位;算法完畢,回歸系統(tǒng)MOVAH,4CHINT21H;顯示子程序僅用于顯示,此處不使用堆棧,*S*HPROCMOVBL,100;這里取最高位,數值100與位數有關,假設有4位,則為1000IDIVBL;除法,得余數和商MOVD*,A*;高余低商,故將商給D*,取最高位,商只有一位PUSHD*;保護D*ADDDL,30HMOVAH,02HINT21H;顯示最高位POPD*MOVAL,DHANDA*,00FFH;將余數位清0,以免影響結果MOVBL,10IDIVBLMOVD*,A*PUSHD*ADDDL,30HMOVAH,02HINT21H;顯示次高位POPD*MOVDL,DHADDDL,30HMOVAH,02HINT21H;顯示最低位,假設有更高位與上述方法一致MOVDL,2CH;AH此處未變INT21HRET*S*HENDPCODE ENDS;代碼段完畢 END START;源程序完畢流程圖:開場開場顯示yuanshishujujilushi的字符串設置循環(huán)初值依次取出變量顯示改變變量偏移量,改變C*調用子程序顯示暫存當前字變量與下一變量比擬確定是否交換循環(huán)進展變量比擬字符串pai*uhoudeshujujilushi輸出最大最小值取出顯示去掉最大最小值求平均值并輸出C*=0"NYU子程序取最高位進展除法顯示最高位余數置零顯示次高位顯示最低位完畢調用子程序將平均值通過左移轉換為二進制數輸出完畢運行結果yuanshishujujilushi:300,250,280,240,260,pai*uhoudeshujujilushi:240,250,260,280,300,zui*iaozhi

溫馨提示

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

評論

0/150

提交評論