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 ответов

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

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

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

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

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
Карта сайта