彙編基礎練習題14: 編寫排序子程式,把資料區中的N個數進行排序(資料區中可能有多個類似13題中a1的變數:a2,a3。。。那麼該子程式應該有幾個入口引數?),然後在主程式中驗證。
阿新 • • 發佈:2018-12-30
彙編基礎練習題14:
編寫排序子程式,把資料區中的N個數進行排序(資料區中可能有多個類似13題中a1的變數:a2,a3。。。那麼該子程式應該有幾個入口引數?),然後在主程式中驗證。
編譯工具:Masm for Windows 整合實驗環境2012.5
(附帶一個工具下載地址https://download.csdn.net/download/qq_36931762/10825773
有需要可以去下載)
程式碼思路:
思想利用的是氣泡排序
---------------------------------------可愛的程式碼區別線----------------------------------
DATAS SEGMENT A1 DW 123 A2 DW 10 A3 DW 200 A4 DW 1 A5 DW 600 DATAS ENDS STACKS SEGMENT ;此處輸入堆疊段程式碼 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV BP,OFFSET A1 MOV SI,OFFSET A1 MOV DI,10;數字個數 CALL SORT MOV BX,0 ML: CMP BX,DI JE MEN MOV AX,[A1+BX] CALL PRINTAX ;回車換行 MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21H ADD BX,2 JMP ML MEN: MOV AH,4CH INT 21H SORT PROC PUSH SI PUSH BP PUSH DI PUSH DX PUSH CX PUSH BX SUB DI,2 SL1: CMP BP,DI JE SEN MOV AX,DI SUB AX,BP MOV BX,0 SL2: CMP BX,AX JE SSEN MOV CX,[SI+BX] MOV DX,[SI+BX+2] CMP CX,DX JNA SSSEN MOV [SI+BX],DX MOV [SI+BX+2],CX ADD BX,2 JMP SL2 SSSEN: ADD BX,2 JMP SL2 SSEN: ADD BP,2 JMP SL1 SEN: POP BX POP CX POP DX POP DI POP BP POP SI RET SORT ENDP PRINTAX PROC PUSH BX PUSH CX PUSH DX MOV BL,10 MOV CL,0 CMP AX,10 JB PRINTF W: DIV BL PUSH AX INC CL MOV AH,0 CMP AX,0 JA W p: POP DX DEC CL MOV DL,DH ADD DL,48 MOV AH,2 INT 21H CMP CL,0 JNE P POP DX POP CX POP BX RET PRINTF: MOV DL,AL ADD DL,48 MOV AH,2 INT 21H POP DX POP CX POP BX RET PRINTAX ENDP CODES ENDS END START
--------------------------------------------程式碼區別線----------------------------------
輸出結果:
看不懂歡迎提問啦,也歡迎提出我程式碼中的問題和提出程式碼優化方案,大家一起學習嘛。
原創看過隨手點個贊吧!(雖然我也不太知道點贊有啥用emmm給點鼓勵總是好的)嘻嘻