![]() |
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;
Я уже как только не пробовал дописать цикл назад с заменами, не выходит <_< Помогоите дописать кому не в лом, плиз. Заранее благодарен ![]() -------------------- На самом деле самого дела нет. В самой деятельности заключена самость дела и наоборот. Наоборот получим оборот на, таким образом перевернем образ...
|
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 0:31 |