169 похожих чатов

Может кто помочь с насм в линуксе? asm section .data

numbers db 5, 2, 8, 1, 6, 3, 9, 4, 7
len equ $ - numbers
format db "Max number: %d", 0xA, 0

section .text
global _start

_start:
; Сортировка пузырьком
mov ecx, len
dec ecx
outer_loop:
xor esi, esi
inner_loop:
mov eax, esi
inc eax
mov edi, esi
mov bl, [numbers + esi]
cmp bl, [numbers + eax]
jge not_swapped
mov al, [numbers + esi]
mov ah, [numbers + eax]
mov [numbers + esi], ah
mov [numbers + eax], al
not_swapped:
inc esi
cmp esi, ecx
jnz inner_loop
dec ecx
jnz outer_loop

; Последний элемент массива после сортировки - самый большой
movzx eax, byte [numbers + ecx]

; Вывод самой большой цифры
mov edi, format
mov esi, eax
call print_number

; Выход из программы
mov eax, 60
xor edi, edi
syscall

; Функция преобразования числа в строку и вывода строки
print_number:
push rax ; сохраняем регистры
push rdx
push rbx
push rcx

mov ecx, 10 ; десятичная система счисления
mov rbx, 0 ; счетчик цифр

.loop:
xor rdx, rdx ; сбрасываем rdx для деления
div rcx ; делим rsi на 10, остаток в rdx, результат в rsi
add dl, '0' ; преобразуем остаток в ASCII
push rdx ; сохраняем цифру на стеке
inc rbx ; увеличиваем счетчик цифр
test rsi, rsi ; проверяем, закончили ли мы
jnz .loop ; если нет, продолжаем

.print_loop:
pop rdx ; достаем цифру из стека
mov rax, 1 ; системный вызов для вывода
mov rdi, 1 ; файловый дескриптор (stdout)
mov rsi, rdx ; указатель на цифру
mov rdx, 1 ; длина сообщения (1 байт)
syscall ; вызываем системный вызов

inc rdx ; увеличиваем длину для следующей цифры
dec rbx ; уменьшаем счетчик цифр
jnz .print_loop ; если есть еще цифры, выводим их

pop rcx
pop rbx
pop rdx
pop rax
ret
mark@mark-ASUS-TUF-Gaming-A15-FA506QM-FA506QM:~/prog$ nasm -f elf64 bubblesort.asm -o bubblesort.o
mark@mark-ASUS-TUF-Gaming-A15-FA506QM-FA506QM:~/prog$ ld -o bubblesort bubblesort.o
mark@mark-ASUS-TUF-Gaming-A15-FA506QM-FA506QM:~/prog$ ./bubblesort
Segmentation fault (core dumped)
Вроде нормально,а чувство что что то все таки не так

3 ответов

67 просмотров
Mark- Автор вопроса

mov edi, esi тут надо было mov edi , eax но все равно не работает,походу еще где то ошибка

Видишь core dumped — пишешь coredumpctl gdb и пошёл. Ну или сам под gdb запускаешь.

Mark- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
9
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта