![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() |
dushik |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: ![]() ![]() ![]() |
Заранее скажу, я ламак в асме, прошу не осуждать за столь тупую просьбу
![]() Был бы очень благодарен, если бы кто-нибудь помог дописать пузырьковую сортировку: Uses crt;
Const
mas : Array [0..9] of Byte = (2, 1, 24, 3, 53, 7, 18, 114, 11, 17);
Var
i : Integer;
Begin
asm
lea di,mas
lea si,mas
mov cx,9
@loop2:
mov al,[di]
inc di
mov ah,[di]
inc di
cmp al,ah
jng @endif
{Обмен}
mov bl,al
mov dl, [di-1]
mov [di-2], dl
mov [di-1], al
{Конец обмена. Этот обмен надо проделать в цикле.}
@endif:
loop @loop2
end
end.
Моя программа пробегая по массиву меняет только пары элементов, если mas[i] < mas [i + 1]. Т. е. меняет местами (если это требуется) только елементы 0 и 1, 2 и 3, 3 и 4... А должен после обмена пары mas[i] и mas[i + 1], двигаться к началу массива пока элемент не встанет в нужное место, примерно так: for j := i downto 1
begin
if (mas[j] <= mas[j - 1]) then
{обменять}
else
break;
end;
Я уже как только не пробовал дописать цикл назад с заменами, не выходит <_< Помогоите дописать кому не в лом, плиз. Заранее благодарен ![]() -------------------- На самом деле самого дела нет. В самой деятельности заключена самость дела и наоборот. Наоборот получим оборот на, таким образом перевернем образ...
|
![]() ![]() |
BlackShadow |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Заранее скажу, я ламак в асме Это уж точно ![]() Короче, где-то так: LEA BX,[mas]
MOV DI,BX
ADD BX,9;Сохраним адрес конца массива
@@0:
MOV SI,DI
@@1:
INC SI
MOV AL,[DI]
CMP [SI],AL
JGE @@2
XCHG AL,[SI]
MOV [DI],AL
@@2:
INC SI
CMP SI,BX
JB @@1
INC DI
CMP DI,BX
JB @@0
Если я чего-то не напутал - проверять влом :p2: |
Shadow |
![]()
Сообщение
#3
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
вот сортирует только я не помню это вроде модернизированный
пузырь Прикрепленные файлы ![]() -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
dushik |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: ![]() ![]() ![]() |
Shadow, спасибо конечно, но у тебя как-то сложно, и пишем мы на встроенном ассемблере, да и проделать мне надо не шейкер-сотрировку, а простую пузырьковую.
BlackShadow, ассемблер я "изучал" две пары, по 15 минут на каждой. И как после этого можно шарить? ![]() За сортировку спасибо. Вот только поясни, если не в лом, что делает XCHG? -------------------- На самом деле самого дела нет. В самой деятельности заключена самость дела и наоборот. Наоборот получим оборот на, таким образом перевернем образ...
|
Shadow |
![]()
Сообщение
#5
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
XCHG
обмен двух значений между регистрами или между регистром и памятью -------- Виктор Юров Assembler Специальный справочник Сообщение отредактировано: Shadow - 22.09.2004 15:38 -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
dushik |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ага, благодарен
![]() -------------------- На самом деле самого дела нет. В самой деятельности заключена самость дела и наоборот. Наоборот получим оборот на, таким образом перевернем образ...
|
BlackShadow |
![]()
Сообщение
#7
|
Гость ![]() |
Ещё катит в случае регистр-регистр, но никак иначе. Более быстрый и короткий код получается, если один и операндов - аккумулятор (AL, AX, EAX).
dushik, не принимай всё всеръёз ![]() |
dushik |
![]()
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(BlackShadow @ 22.09.04 17:12) dushik, не принимай всё всеръёз ![]() Это ты про что? ![]() -------------------- На самом деле самого дела нет. В самой деятельности заключена самость дела и наоборот. Наоборот получим оборот на, таким образом перевернем образ...
|
Shadow |
![]()
Сообщение
#9
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(BlackShadow @ 22.09.04 17:12) Ещё катит в случае регистр-регистр, но никак иначе. всмысле никак иначе в книге Виктор Юров Assembler Специальный справочник четко сказанно: Цитата между регистрами или между регистрами и памятью на флаги команда не влияет Сообщение отредактировано: Shadow - 23.09.2004 16:08 -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
Shadow |
![]()
Сообщение
#10
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(dushik @ 22.09.04 6:54) Shadow, спасибо конечно, но у тебя как-то сложно, и пишем мы на встроенном ассемблере, да и проделать мне надо не шейкер-сотрировку, а простую пузырьковую. наколько я помнюу меня не меняется направление прохода а запоинается адрес где произошло не верное сравнение и продолжает перемещать элемент до тех пор пока сравнение станет верныма потом возвращается на запомненый адрес ------- в прочем может найду первый вариант он тут был на форуме в этом разделе наверно кто-то удалил -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
dushik |
![]()
Сообщение
#11
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 49 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата("Shadow") не меняется направление прохода значит не шейкер ![]() Сообщение отредактировано: dushik - 23.09.2004 18:28 -------------------- На самом деле самого дела нет. В самой деятельности заключена самость дела и наоборот. Наоборот получим оборот на, таким образом перевернем образ...
|
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 3:09 |