匯編實現(xiàn)直接插入排序的方法示例
更新時間:2020年02月04日 09:58:50 作者:this.
這篇文章主要介紹了匯編實現(xiàn)直接插入排序的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
上一篇實現(xiàn)了簡單插入排序的算法,這一篇主要實現(xiàn)直接插入排序算法:
S0 SEGMENT STACK DW 20 DUP(?) TOP LABEL WORD S0 ENDS S1 SEGMENT TIP DB "Input ten number and separate the numbers with space:", 0DH, 0AH, 24H ARY DW 20 DUP(0) CRLF DB 0DH, 0AH, 24H N DW 0 E DW 0 S1 ENDS S2 SEGMENT ASSUME SS:S0, DS:S1, CS:S2, ES:S1 P PROC FAR MOV AX, S0 MOV SS, AX LEA SP, TOP MOV AX, S1 MOV DS, AX MOV AX, S1 MOV ES, AX LEA DX, TIP MOV AH, 9 INT 21H LEA SI, ARY XOR DX, DX PUSH DX MOV BL, 10 MOV CX, 10 INPUT: MOV AH, 1 INT 21H CMP AL, 20H ;空格分隔字符 JE SAVE ;輸入十進制數(shù),將數(shù)存入SI對應(yīng)的內(nèi)存單元 MOV DL, AL MOV AX, [SI] MUL BL SUB DL, 30H ADD AL, DL MOV [SI], AX JMP INPUT SAVE: ADD SI, 2 LOOP INPUT ;數(shù)組保存完畢 LEA SI, ARY MOV DI, SI ADD DI, 2 SUB SI, 2 MOV E, SI ;E用于存放數(shù)組的前一個地址,用來判斷遍歷結(jié)束 ADD SI, 2 XOR AX, AX ;AX用來存插入元素的地址 MOV CX, 9 ;總循環(huán)次數(shù) GO: MOV BX, [DI] PUSH SI ;第一個數(shù)的位置壓棧 CMPA: CMP BX, [SI] JA SEL ;小于就把AX的值存放當前要插入的位置 MOV AX, SI SUB SI, 2 CMP SI, E JNE CMPA SEL: CMP AX, 0 ;判斷AX是否又被修改過,沒有說明當前數(shù)比前面的數(shù)大 JE CON POP SI ;取出第一個數(shù)字的位置 ;從AX到SI這一段的所有數(shù)字往后移動一個位置 CHANGE: MOV DX, [SI] XCHG DX, [SI+2] ;當SI表示的位置在AX前面了,說明移動完成 MOV BP, SI SUB SI, 2 CMP AX, BP JNE CHANGE MOV SI, AX MOV [SI], BX CON: ADD DI, 2 ;繼續(xù)下一次 MOV SI, DI SUB SI, 2 XOR AX, AX ;同時需要清空AX CALL PRINT LOOP GO EXIT: MOV AH, 4CH INT 21H P ENDP ;以下為十進制輸出數(shù)組中的所有數(shù) PRINT PROC NEAR PUSH SI PUSH CX PUSH AX PUSH DX LEA DX, CRLF MOV AH, 9 INT 21H LEA SI, ARY MOV CX, 10 L1: MOV AX, [SI] MOV N, AX CALL OUTPUT ADD SI, 2 MOV DX, 20H MOV AH, 2 INT 21H LOOP L1 POP DX POP AX POP CX POP SI RET PRINT ENDP OUTPUT PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX XOR CX, CX MOV AX, N MOV BX, 10 L2: XOR DX, DX DIV BX PUSH DX INC CX CMP AX, 0 JNE L2 L3: POP DX ADD DX, 30H MOV AH, 2 INT 21H LOOP L3 POP DX POP CX POP BX POP AX RET OUTPUT ENDP S2 ENDS END P
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
匯編指令-狀態(tài)寄存器、cmp、test、jz等指令詳細說明
這篇文章主要介紹了匯編指令-狀態(tài)寄存器、cmp、test、jz等指令詳細說明,需要的朋友可以參考下2020-01-01匯編程序設(shè)計之DOSBox模擬環(huán)境配置
最近在學習匯編語言設(shè)計,然后上網(wǎng)找關(guān)于匯編程序的編譯軟件,不負有心人,終于找到了我需要的軟件,值得慶幸2023-08-08