Изменить порядок букв в строке - Assembler
Формулировка задачи:
Здравствуйте . Есть такая задача: дана строка с восьми слов , в словах с парным номером нужно изменить порядок букв на противоположный .
Вот я пытался что-то сделать , но у меня просто меняет порядок букв во всех словах строки :
Так всё работает , выводит правильно.
Но я ума не приложу , как поменять порядок букв именно в словах с парным номером (
Помогите , пожалуйста , с этой задачей .Заранее спасибо Вам !
.686 ; директива визначення типу мікропроцесора .model flat,stdcall ; завдання лінійної моделі пам’яті ; та угоди ОС Windows option casemap:none ; відмінність малих та великих літер include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\fpu.inc include \masm32\include\user32.inc ; для MessageBox includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib BSIZE equ 30 .data mas1 db 'abc wer tyd oop yhf tdd kjs llj' mas2 db 31 dup(0) cWritten DWORD ? stdout DWORD ? .code _Start: cld ;напрям- вгору lea edi,mas1 ;адреса 1-го масиву mov esi,0 mov edx,0 mov al,' ' ;знак пропуска mov ecx,21 push ecx jmp m2 m4:mov ecx,8 ;счётчик слов m1: mov ah,[ebx] ;заносим в ah последний символ массива mov mas2[edx],ah ;сохраняем этот символ inc edx ;увеличиваем индекс dec ebx ;переходим на следующий элемент cmp [ebx],esi dec ecx jnz m1 m2: pop ecx repne scasb ;ищем пропуск в массиве mov ebx,edi ;сохраняем в ebx место, где был найден пропуск dec ebx ;ebx-1 push ecx dec ecx jnz m4 invoke GetStdHandle,STD_OUTPUT_HANDLE mov stdout,eax invoke WriteConsoleA,stdout,ADDR mas2,sizeof mas2+1,ADDR cWritten,0 push 1800h call Sleep ; API-функция задержки изображения invoke ExitProcess,0 end _Start
Решение задачи: «Изменить порядок букв в строке»
textual
Листинг программы
lea edi,mas1+4 ;адреса 1-го слова
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д