Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2022, 22:16   #1
ClaraBell
Новичок
Джуниор
 
Регистрация: 18.10.2022
Сообщений: 6
По умолчанию поменять байты слова местами. NASM

Сколько читала информацию, вообще не могу понять, как это сделать. Проверка кода идет через компилятор JDoodle(https://www.jdoodle.com/compile-assembler-nasm-online/). Как реализовать код через данный компилятор?

section .text global _start _start:

mov ebp, [msg]
mov bl, [ebp + eax]
xchg [ebp + eax + 1], bl ; simple, but not efficient
mov [ebp + eax], bl
mov [msg], bl mov ecx,msg mov edx, len mov ebx,1
mov eax,4
int 0x80

mov eax,1
int 0x80
section .data msg db "abcde" len equ $ - msg

сам код выглядит так, не не понимаю, как поменять байты в слове
ClaraBell вне форума Ответить с цитированием
Старый 18.10.2022, 22:35   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
rol word [msg], 8
Код:
section .text

global _start

_start:

    rol     [msg], 8 ; обмен местами байтов в слове. После этого будет выведено 'sum', а не 'usm'.

; вызов системной функции Linux i686
    mov     ecx, msg ; 2 параметр - указатель на записываемый блок
    mov     edx, len ; 3 параметр - длина блока, байт
    mov     ebx, 1 ; 1 параметр - дескриптор файла для записи (1 = вывод в консоль)
    mov     eax, 4 ; SYS_WRITE
    int     128 ; вызов

; вызов системной функции Linux i686
    xor     ebx, ebx ; 1 параметр - код выход (0 = нет ошибок)
    mov     eax, 1 ; SYS_EXIT
    int     128 ; вызов

section .data
    msg dw 'us'
        db  "m"
    len equ $ - msg
Цитата:
Сообщение от ClaraBell Посмотреть сообщение
Код:
mov bl, [ebp + eax]
xchg [ebp + eax + 1], bl ; simple, but not efficient
mov [ebp + eax], bl
Зачем вам eax, значение которого не определено на момент использования?

Последний раз редактировалось macomics; 18.10.2022 в 22:54.
macomics вне форума Ответить с цитированием
Старый 18.10.2022, 22:54   #3
ClaraBell
Новичок
Джуниор
 
Регистрация: 18.10.2022
Сообщений: 6
По умолчанию

macomics, огромное спасибо :3
ClaraBell вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поменять местами слова Kot070 Microsoft Office Access 5 29.12.2015 20:43
поменять местами слова в предложении (C++) Slicker Общие вопросы C/C++ 15 10.03.2011 10:17
Поменять слова в строке местами fen1ksss Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 28.11.2010 22:25
поменять местами слова в предложении (C++) Slicker Помощь студентам 3 30.05.2009 17:57
как поменять местами слова в файле? r-tem Общие вопросы C/C++ 6 01.12.2008 22:17