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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2013, 22:25   #1
Satansoft
Пользователь
 
Регистрация: 24.11.2012
Сообщений: 40
Сообщение Манипуляция со строками

Есть цепочечная инструкция: scasb, которая сканирует строку до определенного символа и отрезает все, что до него.

Сканирование на пробел:
Код:
mov al,20h            
mov edi,ebp            
repnz scasb
Есть ли способ сохранить отрезанное, если есть исходная строка, скажем, каким-либо вычитанием от исходной результата scasb в edi?
Satansoft вне форума Ответить с цитированием
Старый 21.11.2013, 05:19   #2
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Satansoft, с какого это scasb отрезает? Строка никуда не девается. Просто индекс в edi становится равным позиции пробела +1. Если пробел найден, конечно. Конкретней задание.
vadimych вне форума Ответить с цитированием
Старый 22.11.2013, 15:44   #3
Satansoft
Пользователь
 
Регистрация: 24.11.2012
Сообщений: 40
По умолчанию

vadimych, короче говоря, нужно разбить предложение на слова и далее провести с ними операции.
Satansoft вне форума Ответить с цитированием
Старый 22.11.2013, 18:27   #4
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Satansoft, короче, я хз какую Вы решили словам экзекуцию устроить, но вот код, выводящий каждое слово из введённого текста с новой строки.
Код:
format PE CONSOLE 4.0
entry start

include 'include\win32a.inc'

start:

lea edi,[buffer]
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov ebx,eax
invoke GetStdHandle,STD_INPUT_HANDLE
mov esi,eax

invoke ReadConsole,esi,edi,260,cbytes,0

mov ecx,[cbytes]

@@:
mov al,' '
mov esi,edi
repnz scasb
repe scasb
mov edx,edi
mov byte [edi-2],0
sub edx,esi
sub edx,2
push ecx

invoke WriteConsole,ebx,esi,edx,cbytes,0

push 0a0dh
mov ecx,esp
invoke WriteConsole,ebx,ecx,2,cbytes,0
add esp,4 

dec edi
pop ecx
inc ecx
cmp ecx,1
jnz @b

cinvoke _getch

invoke ExitProcess,0

buffer rb 260
cbytes dd 0

data import
 
  library kernel,'KERNEL32.DLL',\
          msvcrt,'msvcrt.dll'

  import kernel,\
        GetStdHandle,'GetStdHandle',\
        ExitProcess,'ExitProcess',\
        WriteConsole,'WriteConsoleA',\
        ReadConsole,'ReadConsoleA'

  import msvcrt,\
        _getch,'_getch'
end data
vadimych вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Манипуляция поведением checkbox на JQuery Aleskandr Помощь студентам 0 04.09.2012 08:28
Что такое манипуляция Golovastik Свободное общение 9 04.06.2010 20:58
Манипуляция с DIV ssdm HTML и CSS 2 12.02.2010 23:34
манипуляция клавишей )Игнат( Общие вопросы Delphi 40 26.04.2008 22:56