最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

匯編實(shí)現(xiàn)直接插入排序的方法示例

 更新時(shí)間:2020年02月04日 09:58:50   作者:this.  
這篇文章主要介紹了匯編實(shí)現(xiàn)直接插入排序的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

上一篇實(shí)現(xià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對應(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è)地址,用來判斷遍歷結(jié)束
  ADD SI, 2

  XOR AX, AX ;AX用來存插入元素的地址
  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是否又被修改過,沒有說明當(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前面了,說明移動(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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

盐亭县| 龙江县| 江北区| 怀安县| 望都县| 中山市| 上饶县| 内丘县| 许昌市| 澜沧| 民县| 永昌县| 长子县| 社旗县| 青川县| 郑州市| 大洼县| 鱼台县| 永胜县| 余庆县| 太白县| 镇远县| 红桥区| 微山县| 军事| 特克斯县| 阿城市| 望奎县| 麦盖提县| 通州区| 甘德县| 温宿县| 永顺县| 望城县| 全椒县| 商丘市| 荃湾区| 当阳市| 永吉县| 陇西县| 奉新县|