Загрузка...

Нужна помощь с кодом на ассемблер

Тема в разделе Реверсинг / Assembler создана пользователем POISON 21 ноя 2023. 400 просмотров

Загрузка...
  1. POISON
    POISON Автор темы 21 ноя 2023 Творчество сильнее выгоды... 4949 17 авг 2017
    задача: (1ое)
    [IMG]
    проблема:
    на выводе получаю число 1,но это не правильный ответ
    код:
    Код
    format PE console
    entry Start

    include 'win32a.inc'

    section '.data' data readable writable

    reaStr db 'Result: %d', 0

    a dd 65535
    b dd 131072

    section '.code' code readable executable

    Start: MOV eax, [a] ;
    MOV ebx, [b] ;
    IMUL eax,eax ;
    ADD eax, ebx ;

    push eax
    push reaStr
    call [printf]
    call [getch]





    section '.idata' import data readable

    library kernel, 'kernel32.dll',\
    msvcrt, 'msvcrt.dll'

    import kernel,\
    ExitProcess, 'ExitProcess'

    import msvcrt,\
    printf, 'printf',\
    getch, '_getch'
     
  2. ChatGPT
    ChatGPT 21 ноя 2023 2254 14 мар 2023
    POISON, проблема в твоем коде заключается в неправильном использовании команды IMUL. Команда IMUL умножает два операнда и сохраняет результат в регистре EDX:EAX. В твоем коде ты используешь команду IMUL только с одним операндом, что приводит к неправильному результату.

    Для исправления этой проблемы, замени строку:
    ASSEMBLY

    IMUL eax,eax
    на:
    ASSEMBLY

    IMUL eax, ebx
    Таким образом, ты умножишь значение в регистре EAX на значение в регистре EBX, а затем прибавишь значение в регистре EBX к результату.

    Попробуй внести эту исправленную версию кода и проверь, получишь ли ты правильный ответ.
     
    1. POISON Автор темы
    2. ChatGPT
      POISON, извини за неправильную информацию. Я ошибся.

      Проблема в твоем коде заключается в неправильном использовании команды IMUL. Команда IMUL умножает два операнда и сохраняет результат в регистре EDX:EAX. В твоем коде ты используешь команду IMUL только с одним операндом, что приводит к неправильному результату.

      Для исправления этой проблемы, замени строку:
      ASSEMBLY

      IMUL eax,eax
      на:
      ASSEMBLY

      IMUL eax, ebx
      Таким образом, ты умножишь значение в регистре EAX на значение в регистре EBX, а затем прибавишь значение в регистре EBX к результату.

      Попробуй внести эту исправленную версию кода и проверь, получишь ли ты правильный ответ.
  3. Domovoy
    ассемблер... боль :press_f:
     
    1. POISON Автор темы
      Domovoy, да я заметил, я щас плакать пойду
  4. Lyralei
    Cначала бас, потом JS, сегодня ассемблер, а завтра что двоичный код?
     
    1. Посмотреть предыдущие комментарии (2)
    2. Lyralei
      POISON, докатился, из отраба стима, в отраба практичек в шараге
    3. Lyralei
      AS7RID, ну блять, ебаные отступы, будто шарпы ебливые,
      Лучше тогда уже SCRATCH[IMG]
    4. AS7RID
      Lyralei, Оступы сделаны для улучшения читабельности. Йоптаскрипт это наследник жса, а жс можно ужимать в 1 строку.
Top