Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Сортировка массива на asm

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Сортировка массива на asm
Имя
Сообщение << Старые топики   Новые топики >>
Сортировка массива на asm - 2007-05-20 15:47:10.360000   
kb33

Сообщений: 46
Оценки: 0
Присоединился: 2007-04-03 10:06:11.443333
Необходимо написать программу на asm - сортировка пузырьком.
У меня получилась такая программа, но она работает с ошибками, иногда выдаёт верный результат, а иногда нет.
Написана на встроенном ассемблере. Почему она выдаёт ошибки?
type arr=array[1..10] of byte;
Var Intarr:arr;
  i:integer;
  begin
Randomize;
for  i:=1 to 10 do
Intarr<i>:=Random(i);
asm
PUSHAD
xor esi,esi
xor edi,edi
xor ebx,ebx
xor al,al
Lea ebx,[Intarr]
mov edi,ebx
add ebx,9
mov eax,[ebx]
@@0:
mov esi,edi
@@1:
Inc esi
mov al,[edi]
cmp [esi],al
jge @@2
XCHG al,[esi]
mov [edi],al
@@2:
inc esi
cmp esi,ebx
jL @@1
inc edi
cmp edi,ebx
jb @@0
POPAD
end;
for i:=1 to 10 do
Writeln(Intarr<i>);
Readln;
end.
Post #: 1
RE: Сортировка массива на asm - 2007-05-21 10:43:15.896666   
Andrey1.1

Сообщений: 86
Оценки: 0
Присоединился: 2004-12-01 18:42:36
Не знаю почему у тебя глючит, но я попробовал написать ту же сортировку.
Вот кусок кода:
asm { saving all registers } PUSHAD { register clearing } xor esi, esi xor edi, edi xor ebx, ebx xor ecx, ecx { initializing main loop } mov ecx, 9d { define 'sorting length' loop (9 downto 1) } @1: push ecx mov edx, ecx lea esi, [intarr] lea edi, [intarr] inc edi { sort from 1 to 'sorting length' } @2: mov bx, word prt [edi] cmp {byte ptr} [esi], bx { i'm not sure -- i commented it } jbe @3 xchg {byte ptr} [esi], bx { i'm not sure -- i commented it } mov {byte ptr} [edi], bx { i'm not sure -- i commented it } @3: inc edi inc esi inc edx { if } cmp ecx, edx { not end } jnz @2 { do again } pop ecx dec ecx { if } cmp ecx, 1 { not end } jnz @1 { do again } { restoring all registers } POPAD end;
И ещё: всегда пиши комменты - всегда помогут
Post #: 2
Страниц:  [1]
Все форумы >> [Прочее] >> Сортировка массива на asm







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.