




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、.一、 實驗內(nèi)容用“冒泡“法對一組數(shù)300,250,280,240,260,按從小到大的順序排列。提示:用冒泡的方法對一組數(shù)據(jù)元素排序,它的基本方法是:將相鄰的兩個元素通過比較進行排序,通過多次,多遍的鄰元素排序,實現(xiàn)整個一組數(shù)的排序。對于5(N)個元素,整個排序通過4遍(=N-1)鄰元素排序完成。每一遍的排序由若干次鄰元素的排序組成。4遍排序中,鄰元素的排序依次為4,3,2,1遍。完成第一遍排序后,最大數(shù)沉底,已經(jīng)到達它應占據(jù)的位置,不需要參加下一遍的排序。外循環(huán)的次數(shù)為CX=4次(N-1),內(nèi)循環(huán)的次數(shù)為4,3,2,1(DEC CX)排序遍數(shù)本遍排序前第一次排序后第二次排序后第三次排序后第
2、四次排序后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.編制程序,對這組數(shù)進行排序,并輸出原
3、數(shù)據(jù)及排序后數(shù)據(jù);2.利用DEBUG調(diào)試工具,用D0(是D零命令)命令,查看排序前后,內(nèi)存數(shù)據(jù)的變化;3. 去掉最大和最小的兩個值,求出其余值的平均值,并輸出最大值,最小值和平均值;4. 用學過的壓棧PUSH和出棧POP指令,將平均值按位逐個輸出(即輸出263);5將平均值263轉化為二進制串,并將這組二進制串輸出。6.所有數(shù)據(jù)輸出前要用字符串的輸出指令,進行輸出提示(如:zui da zhi shi : 300等),所有數(shù)據(jù)結果能清晰地顯示在屏幕上。二、 程序清單及流程圖冒泡法:DATA SEGMENT ;定義數(shù)據(jù)段 VAR DW 300,250,280,240,260 ;定義待排序的量 N
4、 EQU $-VAR ;占內(nèi)存空間的大小,是次數(shù)的兩倍 ;因為這是字定義 EJ DW ? ;給平均值預留存儲空間 YSSJ DB yuan shi shu ju ji lu shi:$ ;原始數(shù)據(jù)的輸出提示 PXH DB 0DH,0AH,pai xu hou de shu ju ji lu shi:$;排序后的輸出 ; 提示 MAXS DB 0DH,0AH,zui da zhi shi:$;最大值輸出提示 MINS DB 0DH,0AH,zui xiao zhi shi:$;最小值輸出提示 EQS DB 0DH,0AH,ping jun zhi shi:$;平均值10進制輸出提示 EQE DB
5、 0DH,0AH,ping jun shu de er jin zhi dai ma shi:$;平均值 ;的二進制數(shù)制的輸出提示DATA ENDS ;定義堆棧段STACK SEGMENT PARA STACK STACK STAPN DW 200 DUP (?)STACK ENDS ;定義代碼段CODESEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK ;定義各代碼段,數(shù)據(jù)段,堆棧段 ;初始化START: MOV AX,DATA MOV DS,AX MOV CX,N-2 ;原始數(shù)據(jù)顯示 MOV DX,OFFSET YSSJ ;顯示原始數(shù)據(jù)的輸出提示的字符串,下同
6、MOV AH,9 ;系統(tǒng)調(diào)用09H號功能,輸出字符串 INT 21H MOV CX,N ;輸出原始數(shù)據(jù)循環(huán)初值 MOV DX,10 ;DX的初始化 MOV SI,0 ;變量的偏移量0,2,4,6,8XSX: MOV AX,VARSI ;將變量依次取出,逐個顯示 CALL XSXH ;調(diào)用顯示子程序 ADD SI,2 ;改變變量的偏移量 DEC CX ;改變CX,結束循環(huán) LOOP XSX ;冒泡算法 MOV CX,N-2WXH: PUSH CX MOV SI,0NXH: MOV AX,VARSI ;暫存當前內(nèi)存中的數(shù)據(jù),一個字變量 CMP AX,VARSI+2 ;與下一內(nèi)存中的字變量比較 JL
7、E NXF ;如果前一字變量不大于后一字變量,不做交換, ;直接修改偏移地址 XCHG AX,VARSI+2 ;該項SI值并不改變 XCHG AX,VARSI ;交換,將較大值往后移NXF: ADD SI,2 ;改變偏移量,將所有數(shù)比較完 DEC CX ;實現(xiàn)內(nèi)層循環(huán) LOOP NXH POP CX ;改變外層循環(huán)次數(shù) DEC CX ;外層循環(huán)次數(shù)遞減 LOOP WXH ;排序后的數(shù)據(jù)顯示(同原始數(shù)據(jù)顯示) MOV DX,OFFSET PXH ;顯示排序后數(shù)據(jù)的輸出提示的字符串 MOV AH,9 ;字符串顯示 INT 21H MOV CX,N MOV DX,0 MOV SI,0XSH: MOV
8、 AX,VARSI CALL XSXH ;調(diào)用顯示子程序 ADD SI,2 DEC CX LOOP XSH ;最小值輸出顯示 MOV DX,OFFSET MINS MOV AH,9 INT 21H MOV SI,0 MOV AX,VARSI ;最小值是排序后該片內(nèi)存中偏移量為0的數(shù)值 CALL XSXH ;最大值輸出顯示,最大值的偏移量與定義的類型及個數(shù)有關 MOV DX,OFFSET MAXS MOV AH,9 INT 21H MOV AX,VARSI+8 ;最大值是該片內(nèi)存中偏移量最大為N-2的值 CALL XSXH ;求平均值 MOV DX,0 MOV CX,2 ;保存求和的個數(shù),此處去
9、掉最大最小值,個數(shù)為 ;N/2-2 MOV SI,2 ;暫存求和起始偏移量,此處為2,不排最小值 MOV AX,VARSIQH: ADD SI,2 ADD AX,VARSI LOOP QH ;此循環(huán)用來求取排完序后的和 MOV BX,3 CWD ;擴展,求平均值,此處平均值大于255 IDIV BX ;余數(shù)在DX,商在AX MOV EJ,AX ;將平均值(即商)寫入內(nèi)存,備用 ;使用PUSH,POP功能實現(xiàn)顯示10進制的平均值 MOV DX,OFFSET EQS MOV AH,9 INT 21H ;輸出相應提示字符串 MOV AX,EJ ;將平均值寫入寄存器,進行處理 MOV BL,10 ;先
10、取最低位 IDIV BL MOV DL,AH ;余數(shù)在高位,給DX暫存 PUSH DX ;最低位先壓棧 AND AX,00FFH ;將余數(shù)清0,保留商,再次取余 IDIV BL ;此前為變BL值,再次取余,的次低位 MOV DL,AH ;將余數(shù)給DL暫存 PUSH DX ;次低位壓棧 MOV DL,AL ;此例僅3為,若有更高位,繼續(xù)上述處理 PUSH DX ;最高位壓棧 MOV CX,3 ;CX存十進制數(shù)的位數(shù) XHSC: POP DX ADD DL,30H MOV AH,02H INT 21H LOOP XHSC ;依次彈出最高位,次高位,最低位,并逐一顯示 ;將平均值轉換為二進制顯出 M
11、OV DX,OFFSET EQE MOV AH,9 INT 21H ;輸出相應提示字符串 MOV BX,EJ ;將平均值寫入BX寄存器進行處理 MOV CX,16 ;循環(huán)次數(shù),與定義的類型相關,一個字節(jié)8次XHYW: ROL BX,1 ;循環(huán)左移,依次取最低位 MOV DL,BL ;數(shù)據(jù)暫存 AND DL,01H ;取最低位,其余清0 ADD DL,30H MOV AH,02H INT 21H LOOP XHYW ;依次顯示各位 ;算法結束,回歸系統(tǒng) MOV AH,4CH INT 21H; 顯示子程序 僅用于顯示,此處不使用堆棧,XSXH PROC MOV BL,100 ;這里取最高位,數(shù)值1
12、00與位數(shù)有關,若有4位,則為1000 IDIV BL ;除法,得余數(shù)和商 MOV DX,AX ;高余低商,故將商給DX,取最高位,商只有一位 PUSH DX ;保護DX ADD DL,30H MOV AH,02H INT 21H ;顯示最高位 POP DX MOV AL,DH AND AX,00FFH ;將余數(shù)位清0,以免影響結果 MOV BL,10 IDIV BL MOV DX,AX PUSH DX ADD DL,30H MOV AH,02H INT 21H ;顯示次高位 POP DX MOV DL,DH ADD DL,30H MOV AH,02H INT 21H ;顯示最低位,若有更高位
13、與上述方法一致 MOV DL,2CH ;AH此處未變 INT 21H RETXSXH ENDPCODEENDS ;代碼段結束ENDSTART ;源程序結束流程圖:開始顯示yuanshishujujilushi的字符串設置循環(huán)初值 依次取出變量顯示改變變量偏移量,改變CX調(diào)用子程序顯示暫存當前字變量與下一變量比較確定是否交換循環(huán)進行變量比較字符串paixuhoudeshujujilushi輸出最大最小值取出顯示去掉最大最小值求平均值并輸出CX=0?NYU 子程序取最高位進行除法顯示最高位余數(shù)置零顯示次高位顯示最低位結束調(diào)用子程序將平均值通過左移轉換為二進制數(shù)輸出結束三、 運行結果yuan shi
14、 shu ju ji lu shi : 300,250,280,240,260,pai xu hou de shu ju ji lu shi: 240,250,260,280,300,zui xiao zhi shi: 240,zui da zhi shi: 300ping jun zhi shi: 263ping jun shu de er jin zhi dai ma shi: 00111編譯:鏈接:運行結果:四、 調(diào)試分析和體會用DO命令查看排序前后,內(nèi)存數(shù)據(jù)的變化在此次編寫程序的過程中,遇到問題主要是因為對冒泡法的不熟悉,在編寫程序的過程中進度較慢,參照著書上的冒泡法,但是在之后遇到的問題便是在編譯出錯很多時,需要慢慢地借助DEBUG工具以及自己的檢查來找出錯誤,這個過程比較艱難。錯誤主要出現(xiàn)在:由于此次的程序較長,在進行跳轉的時候弄錯跳轉的地方,而每次檢查又比較的久,主要借助單步調(diào)試來進行檢查。此外在調(diào)用程序的過程中,對CALL指令的不熟悉,導致錯用誤用。還有就是程序的邏輯性思維還是有些混亂,導致程序調(diào)試編寫的過程比較艱難。但最后還是在不斷地DEBUG下,把冒泡的程序理解深入并編寫調(diào)試成功。自身體會:邏輯思維的訓練不是一朝一夕的事情,每次都會因為邏輯思維的不清晰,而導致編寫程序時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院招聘護士合同范例
- 公共器材租賃合同范本
- 合同范本 合作
- 公司勞動用工合同范本簡版
- 售后回租合同范本
- 出租野餐工具合同范本
- 合同范本些可以修改
- 化妝造型合同范本
- 華能電廠合同范本
- 員工內(nèi)部合同范本
- 四川省成都市2024-2025學年高一上學期期末考試歷史試題(含答案)
- 2025年第六屆美麗中國國家版圖知識競賽題庫及答案
- 2025年湖北中煙工業(yè)限責任公司招聘筆試高頻重點提升(共500題)附帶答案詳解
- 9生物與非生物課件-四年級下冊科學人教鄂教版
- 醫(yī)囑或處方的督導檢查、總結、反饋及改進措施
- 2023年度行政事業(yè)單位內(nèi)部控制報告編報講解課件
- 品管圈PDCA案例-介入中心提高手術患者交接記錄書寫合格率醫(yī)院品質管理成果匯報
- 《土木工程概論》-第3講-土木工程材料-課件
- 《現(xiàn)代漢語》課件-詞義的性質和構成
- 第十七屆山東省職業(yè)院校技能大賽中職組“西式烹飪”賽項規(guī)程
- 華東師范大學《外國人文經(jīng)典(下)》2022-2023學年第一學期期末試卷
評論
0/150
提交評論