Переставить в обратном порядке символы между первым и последним вхождением заданного символа - Assembler

Узнай цену своей работы

Формулировка задачи:

переставить в обратном порядке символы между первым и последним вхождением заданного символа в исходной строке, если этот символ не встречается не менее двух раз.
Ребята, помогите кто-нибудь пож-та=(

Решение задачи: «Переставить в обратном порядке символы между первым и последним вхождением заданного символа»

textual
Листинг программы
format PE console
include 'win32a.inc'
 
        mov     edi,sk
        mov     al,[cfnd]
        mov     ecx,[qcsk]
        cld
        repne   scasb
        jnz     mNotFound
        push    edi
 
        cld
        repne   scasb
        jnz     mNotFound
 
        pop     esi
        dec     edi
        mov     ecx,edi
        sub     ecx,esi
        shr     ecx,1
        cmp     ecx,0
        je      mNN
        dec     edi
        cld
mExchange:
        lodsb
        mov     ah,[edi]
        xchg    [esi-1],ah
        xchg    [edi],al
        dec     edi
        loop    mExchange
mNN:
 
mNotFound:
 
        invoke  ExitProcess,0
 
cfnd    db 'A'
sk      db 'abcdefghijAklmnopqrsAtuvwxyz'
qcsk    dd $-sk
 
include 'API\kernel32.inc'
 
data import
 
        library kernel32,'KERNEL32.DLL'
 
end data

Объяснение кода листинга программы

Список элементов:

  1. Переменная edi используется для хранения индекса текущего симвома в строке.
  2. Переменная al используется для хранения текущего символа.
  3. Переменная ecx используется для хранения количества символов, которые нужно переставить.
  4. Переменная esi используется для хранения индекса последнего символа, который нужно переставить.
  5. Переменная ecx используется для хранения размера строки после перестановки символов.
  6. Переменная edi используется для хранения индекса первого символа, который нужно переставить.
  7. Переменная eax используется для временного хранения символа.
  8. Переменная edi используется для уменьшения индекса на единицу.
  9. Переменная ecx используется для хранения количества символов, которые нужно переставить.
  10. Переменная esi используется для увеличения индекса на единицу.
  11. Переменная eax используется для временного хранения символа.
  12. Переменная eax используется для обмена символами.
  13. Переменная edi используется для уменьшения индекса на единицу.
  14. Переменная ecx используется для хранения количества символов, которые нужно переставить.
  15. Переменная esi используется для увеличения индекса на единицу.
  16. Переменная eax используется для временного хранения символа.
  17. Переменная eax используется для обмена символами.
  18. Переменная edi используется для уменьшения индекса на единицу.
  19. Переменная ecx используется для хранения количества символов, которые нужно переставить.
  20. Переменная esi используется для увеличения индекса на единицу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы