版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、; 用匯編語言實現(xiàn)實現(xiàn)冒泡排序,并將排序后的數(shù)輸出DATAS SEGMENTA dw 100,344,3435,43433,3438,343,134,80,8,1000,65535,54,45 N =$-A ; 計算數(shù)字所占的字節(jié)數(shù)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART :MOV AX,DATASMOV DS,AXMOV SI,0 ;SI 遍歷數(shù)字 ; 前一個數(shù)的地址MOV CX,N/2-1 ; 設(shè)置循環(huán)次數(shù), M(M=N/2個數(shù)需要,循環(huán) M-1次 CALL BUBBLE ; 調(diào)用 BUBBLE 將原來的數(shù)排序; 輸出排序后的
2、數(shù)MOV CX,N/2 ; 循環(huán) M 次輸出排序后的 M 個數(shù)MOV SI,0 ;SI 遍歷排序后的數(shù)MOV DI,0 ; 用 DI 記錄數(shù)字的位數(shù)MOV BP,N+5 ;BP 用于遍歷存儲的轉(zhuǎn)化后的字符的位置SHOW: PUSH CX ; 循環(huán)次數(shù)入棧MOV DX,0 ; 由于將要進行 16位除需要置高 16位為 0MOV AX,SI ; 低 16位為排序后的數(shù)CALL DTOC ; 調(diào)用 DTOC 將十進制數(shù)轉(zhuǎn)換為字符串CALL SHOW_STR ; 調(diào)用 SHOW_STR將一個數(shù)轉(zhuǎn)化得到的字符串輸出 ADD SI,2 ; 下一個數(shù)POP CX ; 循環(huán)次數(shù)出棧棧LOOP SHOWMOV
3、AH,4CHINT 21H; 冒泡排序BUBBLE PROCL1: PUSH CX ; 將循環(huán)次數(shù)入棧LEA SI,A ;SI 遍歷 DATAS 數(shù)據(jù)段的數(shù)字L2: MOV AX,ASI ; 將前一個數(shù)存于 AXCMP AX,ASI+2 ; 比較前后兩個數(shù)JBE NEXT ; 如果前一個數(shù)小于或等于后一個數(shù)則繼續(xù)本輪的比較 XCHG AX,ASI+2 ; 否則,交換前后兩個數(shù)的位置MOV ASI,AXNEXT:ADD SI,2 ; 下一個數(shù)LOOP L2 ; 注意內(nèi)層循環(huán)的次數(shù)已經(jīng)確定了POP CX ; 將循環(huán)次數(shù)出棧LOOP L1 ; 下一輪比較RETBUBBLE ENDP; 將十進制數(shù)轉(zhuǎn)換
4、為字符串并儲存起來DTOC PROCS:MOV CX,10 ; 將除數(shù) 10,放入 CX 中CALL DIVDW ; 調(diào)用 DIVDW 程序ADD CL,30H ; 把數(shù)字轉(zhuǎn)換為 ASCII 碼,這樣就能顯示了MOV DS:BP,CL ; 把 ASCII 碼放到內(nèi)存中INC DI ; 用 DI 記錄循環(huán)的次數(shù)PUSH AX ; 將低 16位入棧ADD AX,DX ; 將高位與低位相加,接著判斷是否已經(jīng)除盡JZ BACK ; 除盡后返回調(diào)用處POP AX ; 將低 16位出棧DEC BP ; 逆序存放轉(zhuǎn)化后的字符,便于主程序調(diào)用 SHOW_STR JMP SBACK:POP AX ; 為了得到正
5、確的 IP 值,需要出棧一次RETDTOC ENDP; 子程序定義開始 , 功能是分離被除數(shù)的各個位的數(shù)字; 公式:X/N=int(H/N*65536+rem(H/N*65536+L/NDIVDW PROCPUSH AX ; 低 16位入棧MOV AX,DX ; 將高 16位寫入 AX,MOV DX,0 ; 將高 16位置零DIV CX ; 將新的數(shù)除 10,MOV BX,AX ; 將商 int(H/N轉(zhuǎn)移到 BX ,默認余數(shù) rem(H/N在 DX POP AX ; 將低 16位出棧,DIV CX ; 將 rem(H/N*65536+L除 10, 默認余數(shù)在 DXMOV CX,DX ; 將余
6、數(shù)轉(zhuǎn)移到 CXMOV DX,BX ; 將商 int(H/N轉(zhuǎn)移到 dx, 相當于 int(H/N*65536RET ; 子程序定義結(jié)束DIVDW ENDP; 實現(xiàn)字符串的輸出SHOW_STR PROCS2:MOV AH,2 ; 輸出數(shù)字轉(zhuǎn)化后的字符串MOV DL,DS:BPINT 21HINC BP ; 順序輸出DEC DI ; 數(shù)字的位數(shù)減一JZ OK ; 字符串輸出完了就結(jié)束JMP S2 ; 否則繼續(xù)輸出OK:MOV AH,2 ; 輸出空格MOV DL,0INT 21HRETSHOW_STR ENDPCODES ENDSEND START; 實現(xiàn)冒泡排序,并將排序后的數(shù)輸出DATAS SE
7、GMENTA dw 100,344,3435,43433,3438,343,134,80,8,1000,65535,54,45 N=$-A ; 計算數(shù)字所占的字節(jié)數(shù)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART :MOV AX,DATASMOV DS,AXMOV SI,0 ;SI 遍歷數(shù)字 ; 前一個數(shù)的地址MOV CX,N/2-1 ; 設(shè)置循環(huán)次數(shù), M(M=N/2個數(shù)需要,循環(huán) M-1次 CALL BUBBLE ; 調(diào)用 BUBBLE 將原來的數(shù)排序; 輸出排序后的數(shù)MOV CX,N/2 ; 循環(huán) M 次輸出排序后的 M 個數(shù)MOV
8、 SI,0 ;SI 遍歷排序后的數(shù)MOV DI,0 ; 用 DI 記錄數(shù)字的位數(shù)MOV BP,N+5 ; 用于遍歷存儲的轉(zhuǎn)化后的字符的位置SHOW: PUSH CX ; 循環(huán)次數(shù)入棧MOV DX,0 ; 由于將要進行 16位除需要置高 16位為 0MOV AX,SI ; 低 16位為排序后的數(shù)CALL DTOC ; 調(diào)用 DTOC 將十進制數(shù)轉(zhuǎn)換為字符串CALL SHOW_STR ; 調(diào)用 SHOW_STR將一個數(shù)轉(zhuǎn)化得到的字符串輸出 ADD SI,2 ; 下一個數(shù)POP CX ; 循環(huán)次數(shù)出棧棧LOOP SHOWMOV AH,4CHINT 21HBUBBLE PROCL1: PUSH CX
9、; 將循環(huán)次數(shù)入棧LEA SI,A ;SI 遍歷 DATAS 數(shù)據(jù)段的數(shù)字L2: MOV AX,ASI ; 將前一個數(shù)存于 AXCMP AX,ASI+2 ; 比較前后兩個數(shù)JBE NEXT ; 如果前一個數(shù)小于或等于后一個數(shù)則繼續(xù)本輪的比較XCHG AX,ASI+2 ; 否則,交換前后兩個數(shù)的位置MOV ASI,AXNEXT:ADD SI,2 ; 下一個數(shù)LOOP L2 ; 注意內(nèi)層循環(huán)的次數(shù)已經(jīng)確定了POP CX ; 將循環(huán)次數(shù)出棧LOOP L1 ; 下一輪比較RETBUBBLE ENDP; 將十進制數(shù)轉(zhuǎn)換為字符串并儲存起來DTOC PROCS:MOV CX,10 ; 將除數(shù) 10,放入 C
10、X 中CALL DIVDW ; 調(diào)用 DIVDW 程序ADD CL,30H ; 把數(shù)字轉(zhuǎn)換為 ASCII 碼,這樣就能顯示了MOV DS:BP,CL ; 把 ASCII 碼放到內(nèi)存中INC DI ; 用 DI 記錄循環(huán)的次數(shù)PUSH AX ; 將低 16位入棧ADD AX,DX ; 將高位與低位相加,接著判斷是否已經(jīng)除盡 JZ BACK ; 除盡后返回調(diào)用處POP AX ; 將低 16位出棧DEC BP ; 逆序存放轉(zhuǎn)化后的字符,便于主程序調(diào)用 SHOW_STR JMP SBACK:POP AX ; 為了得到正確的 IP 值,需要出棧一次RETDTOC ENDP; 子程序定義開始 , 功能是分
11、離被除數(shù)的各個位的數(shù)字; 公式:X/N=int(H/N*65536+rem(H/N*65536+L/NDIVDW PROCPUSH AX ; 低 16位入棧MOV AX,DX ; 將高 16位寫入 AX,MOV DX,0 ; 將高 16位置零DIV CX ; 將新的數(shù)除 10,MOV BX,AX ; 將商 int(H/N轉(zhuǎn)移到 BX ,默認余數(shù) rem(H/N在 DX POP AX ; 將低 16位出棧,DIV CX ; 將 rem(H/N*65536+L除 10, 默認余數(shù)在 DX MOV CX,DX ; 將余數(shù)轉(zhuǎn)移到 CXMOV DX,BX ; 將商 int(H/N轉(zhuǎn)移到 dx, 相當于 int(H/N*65536 RET ; 子程序定義結(jié)束DIVDW ENDP; 實現(xiàn)字符串的輸出SHOW_STR PROC
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 賀州學(xué)院《工程項目管理》2022-2023學(xué)年第一學(xué)期期末試卷
- 菏澤學(xué)院《物流系統(tǒng)分析與設(shè)計》2021-2022學(xué)年第一學(xué)期期末試卷
- 菏澤學(xué)院《城市地理學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 河南師范大學(xué)《有機合成》2022-2023學(xué)年第一學(xué)期期末試卷
- 河南師范大學(xué)《英漢筆譯》2023-2024學(xué)年第一學(xué)期期末試卷
- 河南師范大學(xué)《藥品生產(chǎn)質(zhì)里管理工程》2021-2022學(xué)年第一學(xué)期期末試卷
- 六年級下冊默寫篇目-2024年中考(原卷版)
- 河南師范大學(xué)《數(shù)據(jù)分析與統(tǒng)計軟件應(yīng)用》2021-2022學(xué)年第一學(xué)期期末試卷
- 綜合素質(zhì)評價實施方案范文
- 河南師范大學(xué)《環(huán)境與資源保護法》2022-2023學(xué)年第一學(xué)期期末試卷
- 浙江省溫州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細及行政區(qū)劃代碼
- 知法守法依法維權(quán)課件
- 小學(xué)英語人教PEP新版六年級上冊Unit3B-Let-s-learn課件
- 維修工具管理新版制度
- 幼兒園《保護牙齒》課件
- 信息技術(shù)與教育教學(xué)融合課評價表
- 芯片產(chǎn)業(yè)鏈概述
- 鋼筋吊斗、吊籠制作技術(shù)交底范本
- 金寶高效能礦物質(zhì)在豬上的應(yīng)用
- 新蘇科版八年級上冊初中數(shù)學(xué)全冊教案
- 網(wǎng)紅主播孵化合作協(xié)議
評論
0/150
提交評論