0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 16
1

Помощь в коде. Сортировка

14.10.2013, 12:44. Показов 609. Ответов 1
Метки нет (Все метки)

Здравствуйте. Помогите с кодом разобраться пожайлуста. В ассемблере только начал разбираться, еще ничего не понимаю. Взял код на вашем сайте шейкерной сортировки. Решил запустить на своем fasm-е, в итоге появляются ошибки: в 13 строке (invalid operand), 24 (invalid operand), 30 (illegal instruction), 31 (extra characters on line), 32 (invalid operand), 35 (invalid operand). Что неправильного то? Обьясните пожайлуста.

Assembler
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
;.data
H dd 0    ;верхняя граница неотсортированного массива
L dd n-1    ;нижняя граница неотсортированного массива
;.code
    xor esi,esi        ;нижняя граница неотсортированного массива
    xor ebx,ebx        ;флаг - были/не были перестановки в проходе
    mov ecx,L;количество неотсортированных элементов снизу минус один
a4:    inc esi
      call Compare_and_Swapping    ;сравнение и обмен значений элементов
    loop a4                ;двигаемся вниз до границы массива
    dec ebx                ;проверяем были ли перестановки
    jnz exit        ;если перестановок не было - сортировка закончена 
    dec L        ;уменьшаем количество неотсортированных элементов снизу
    jz exit    ;достигли границы массива
    dec esi        ;esi=L
    mov ecx,esi
    sub ecx,H;количество неотсортированных элементов сверху минус один
    jecxz exit    ;если граница снизу равна границе сверху - выходим
a2:    call Compare_Swapping        ;сравнение и обмен значений элементов
    dec esi
    loop a2                ;двигаемся вверх до границы массива
    dec ebx                ;проверяем были ли перестановки
    jnz exit    ;если перестановок не было - заканчиваем сортировку
    inc H    ;уменьшаем количество неотсортированных элементов сверху
    inc esi        ;esi=H
    mov ecx,L    
    sub ecx,esi    ;если граница снизу больше, чем граница сверху – значит 
    ja a4;есть еще неотсортированные элементы - начинаем новый проход
exit:
Compare_Swapping proc;сравнение и обмен значений соседних элементов
    mov eax,array[esi*4]    ;получаем значение очередного элемента
    cmp array[esi*4-4],eax    ;сравниваем его с соседним элементом
    jna a3    ;если меньше или равен - идем к следующему элементу
    seta bl    ;если была перестановка - взводим флаг
    xchg eax,array[esi*4-4]        ;меняем значения элементов местами
    mov array[esi*4],eax
a3:    ret
Compare_Swapping endp
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2013, 12:44
Ответы с готовыми решениями:

Нужна помощь в коде шаблона!!!
В общем есть код в index.php вот он: <div id="f_area"> <?php if($this->countModules('user1')) :...

Помощь в исправлении ошибок в коде
NAK1 STORAGE 10 NAK2 STORAGE 10 NAK3 STORAGE 10 SIMULATE 5 GENERATE 10, 5 ADVANCE 10, 3 TEST...

ошибка в коде (нужна помощь)
вот сам код: #include <iostream.h> void show__parameters (int a=1, int b=2, int c=3) { ...

Нужна помощь с исправлением ошибок в коде
Добрый день! Нужна помощь с исправлением ошибок в коде. unit Unit1; interface uses ...

1
Ушел с форума
Автор FAQ
15031 / 7226 / 899
Регистрация: 11.11.2010
Сообщений: 12,977
14.10.2013, 12:54 2
Sky93,
я автор программы которую ты приводишь, написана она была для masm. На FASM не пишу, но изменения скорее всего следующие
13 строка dec [L]
24 - inc [H]
30 - Compare_Swapping:
31 - mov eax,[array + esi*4]
32 - cmp [array + esi*4-4],eax
35 - xchg eax,[array + esi*4-4]
38 - удали строку
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.10.2013, 12:54

Сортировка массива. Нужна помощь.
Добрый вечер всем. Прошу помощи. Задача следующая. 2. Дан массив, состоящий из символов....

Помощь по задаче(структура, двойная сортировка)
В общем, парни, совсем запутался и запарился) нужна помощь по этой задаче: 11. Сформировать...

Ошибка в коде С++ (сортировка)
как сделать так, чтоб выводило нормальный массив?

Помощь с ошибками в коде программы "Hello world"
Я новичек, так что кривой немного. В общем хотел поставить себе среду Microsoft Visual C++ 6.0, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru