Сборник по задачам и примерам Assembler


Сортировка массивов - часть 5


ПРОГРАММА prg4_104 mov mas[si-l].al :mas[j-

mov al ,x

//prg4_104 - программа на псевдоязыке сортировки прямым обменом 2 (шейкерной) mov mas[si].al ;mas[j]:-x

//Вход: mas[n] - неупорядоченная последовательность байтовых двоичных значений. mov k.si :k:=j

//Выход: mas[n] -упорядоченная последовательность байтовых двоичных значений. ml: dec si :j:=j-l

loop cycll

ПЕРЕМЕННЫЕ mov ax.k

INT BYTE n=8: //количество элементов в сортируемом массиве inc ax

INT BYTE mas[n]: //сортируемый массив размерностью п (О..п-l) mov Lax :L:=k+l

INT BYTE X: 1-0; j=0: г=0: 1=0: k=0 // i. j. г. 1. k - индексы : цикл cycl2 :ДЛЯ j:=l ДОВНИЗ

НАЧ_ПРОГ mov si.L :j:=L

1:=2: r:=n; k:=n mov ax.R

ПОВТОРИТЬ

ДЛЯ j:=r ДОВНИЗ 1 //j изменяется от 1 до г ЕСЛИ mas[j-l]< mas[j] TO НАЧ_БЛОК_1

x:=mas[j-l]: mas[j-l]:=mas[j]: mas[j]:=X: k:=j КОН_БЛОК_1

ДЛЯ j:=l ДОВНИЗ г //j изменяется от г до 1 ЕСЛИ mas[j-l]< mas[j] TO НАЧ_БЛОК_2

x:-mas[j-l]; mas[j-l]:=mas[j]; mas[j]:=X; k:=j К0Н_БЛ0К_2 r:=k-l ПОКА (1>г) КОН_ПРОГ

:prg4_104.asm - программа на ассемблере сортировки прямым выбором 2 (шейкерной).

.data

: задаем массив

masdb 44.55.12.42.94.18.06.67

n=$-mas

X db 0

L dw 1

R dw n

k dw n

.code

;.... :1:=2: r:=n: k:=n

cycl3: :ДЛЯ ДОВНИЗ 1

mov si.R :j:=R

push si

sub si.L

mov ex,si количество повторений цикла cycll

pop si

dec si cycll: :ЕСЛИ mas[j-l]< mas[j] TO

mov al,mas[si-1]

emp al.mas[si]

jna ml

mov al,mas[si-1]

mov x.al ;x:=mas[j-l]

mov al.mas[si]

mov mas[si-l].al :mas[j-l]:=mas[j]

mov a 1, x

mov mas[si].al :mas[j]:=x

mov k.si ;k:=j

ml: dec si :j:=j -1

loop cycll

mov ax.k

inc ax

mov L.ax :L:=k+l : цикл сус12 :ДЛЯ j:-l ДОВНИЗ г

mov si.L :j:=L

mov ax.R

sub ax.L

mov ex.ax количество повторений цикла сус12

cyc12: mov al.mas[si-l] :ЕСЛИ mas[j-l]< mas[j] TO

emp al.mas[si]

jna m2

mov al,mas[si-l]

mov x.al ;x:=mas[j-l]

mov al.mas[si]

mov mas[si-l].al ;mas[j-l]:=mas[j]

mov al .x

mov mas[si].al :mas[j]:=x

mov k.s1 :k:=j

m2: inc si :j:=j+l

loop cycl2

mov ax.k




- Начало -  - Назад -  - Вперед -