1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| org 100h
debut: MOV taille,10 ; taille du tableau
MOV taille2,8 ; taille du tableau-2
MOV BX,-1 ; BX : indice du tablaeu
boucle1: INC BX ; BX = BX + 1
MOV ind_min,BX ; ind_min = i
MOV AL,tab[BX] ; AL = tab[indice_min]
MOV SI,1 ; SI = 1
boucle2: CMP tab[BX+SI],AL ; comparer les contenues de tab[BX+SI] et AL
JAE boucle3 ; sauter si le contenue de tab[BX+SI] est superieur a AL
; si inferieur, on a un nouveau minimum
MOV CX,BX
ADD CX,SI ; CX=BX+SI
MOV ind_min,CX ; CX contient le nouveau ind_min
MOV AL,tab[BX] ; AL = tab[indice_min] contient le nouveaux minimum
boucle3: INC SI
MOV CX,BX
ADD CX,SI ; CX=BX+SI
CMP CX,taille ; CX doit etre inferieure a taille
JNE boucle2
; permutation de tab[BX] et tab[ind_min]
MOV DI,ind_min
MOV AH,tab[BX]
MOV tab[BX],Al
MOV tab[DI],AH
CMP BX,taille2 ; BX doite etre a taille2
JNE boucle1
MOV AH,4CH
int 21h
; defintion de de donnees
tab db 42,6,15,22,1,0,100,31,17,10
taille dw ?
taille2 dw ?
ind_min dw ? |
Partager