匯編實(shí)現(xiàn)直接插入排序的方法示例
更新時(shí)間:2020年02月04日 09:58:50 作者:this.
這篇文章主要介紹了匯編實(shí)現(xiàn)直接插入排序的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
上一篇實(shí)現(xiàn)了簡(jiǎn)單插入排序的算法,這一篇主要實(shí)現(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 ;輸入十進(jìn)制數(shù),將數(shù)存入SI對(duì)應(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ù)組的前一個(gè)地址,用來(lái)判斷遍歷結(jié)束 ADD SI, 2 XOR AX, AX ;AX用來(lái)存插入元素的地址 MOV CX, 9 ;總循環(huán)次數(shù) GO: MOV BX, [DI] PUSH SI ;第一個(gè)數(shù)的位置壓棧 CMPA: CMP BX, [SI] JA SEL ;小于就把AX的值存放當(dāng)前要插入的位置 MOV AX, SI SUB SI, 2 CMP SI, E JNE CMPA SEL: CMP AX, 0 ;判斷AX是否又被修改過(guò),沒(méi)有說(shuō)明當(dāng)前數(shù)比前面的數(shù)大 JE CON POP SI ;取出第一個(gè)數(shù)字的位置 ;從AX到SI這一段的所有數(shù)字往后移動(dòng)一個(gè)位置 CHANGE: MOV DX, [SI] XCHG DX, [SI+2] ;當(dāng)SI表示的位置在AX前面了,說(shuō)明移動(dòng)完成 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 ;同時(shí)需要清空AX CALL PRINT LOOP GO EXIT: MOV AH, 4CH INT 21H P ENDP ;以下為十進(jìn)制輸出數(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
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
匯編指令-狀態(tài)寄存器、cmp、test、jz等指令詳細(xì)說(shuō)明
這篇文章主要介紹了匯編指令-狀態(tài)寄存器、cmp、test、jz等指令詳細(xì)說(shuō)明,需要的朋友可以參考下2020-01-01匯編程序設(shè)計(jì)之DOSBox模擬環(huán)境配置
最近在學(xué)習(xí)匯編語(yǔ)言設(shè)計(jì),然后上網(wǎng)找關(guān)于匯編程序的編譯軟件,不負(fù)有心人,終于找到了我需要的軟件,值得慶幸2023-08-08匯編語(yǔ)言 跳轉(zhuǎn)指令與C語(yǔ)言的條件分支
這篇文章主要介紹了匯編語(yǔ)言 跳轉(zhuǎn)指令與C語(yǔ)言的條件分支,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03匯編語(yǔ)言指令集學(xué)習(xí)條件轉(zhuǎn)移指令詳解
這篇文章主要為大家介紹了匯編語(yǔ)言指令集學(xué)習(xí)條件轉(zhuǎn)移的指令全面總結(jié)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11一位數(shù)乘法的匯編語(yǔ)言實(shí)現(xiàn)方法
這篇文章主要介紹了一位數(shù)乘法的匯編語(yǔ)言實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02