Доброе время суток народ.
Есть следующий код.
Код:

;DS:DI - адрес массива
TITLE The bubble way of sorting the array
SSEG SEGMENT PARA STACK 'STACK' ;
DB 256 DUP(0)
SSEG ENDS
DSEG SEGMENT PARA PUBLIC 'DATA'
ArraySize DW 20 DUP(0) ;MAX-65535
DSEG ENDS ;DB/DW - Define Bytes/Words
CSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
BUBBLE_SORT PROC NEAR ;Procedure Definition (32-FAR)
push ds
sub ax,ax
push ax
mov ax,DSEG ;инициализируем адреса сегментов
mov ds,ax
Start: mov dx,ArraySize ; ArraySize в DX
cld ;установим в ноль флаг направления DF
cmp dx,1 ;сравниваем dx с 1
jbe sort_exit ;выйти, если нечего сортировать
dec dx ;уменьшит значение dx на единицу
sb_loop1: mov cx,dx ;установить длину цикла
xor bx,bx ;BX будет флагом обмена
mov si,di ;SI – указатель на текущий элемент
sb_loop2: lodsw ;считать следующий элемент
cmp ax,word ptr [si]
jbe no_swap
xchg ax,word ptr [si]
mov word ptr [si-2],ax
inc bx
no_swap: loop sb_loop2
cmp bx,0 ;если сортирование не закончилось
jne sb_loop1 ;перейти к следующему элементу
sort_exit: pop ax
pop ds
ret
BUBBLE_SORT ENDP
CSEG ENDS
END BUBBLE_SORT
Задача кода – инициализировать массив, заполнить его и сортировать методом пузырька.
На текущий момент код умеет задавать размерность массива в шапке.
Необходимо разместить адрес массива в DS:DI и заполнить элементы массива случайными величинами (например считать данные с памяти).
Пишу на TASMе.
Кто знает отпишитесь.