FASM: Удаление последнего символа из строки.

Тема в разделе "WASM.BEGINNERS", создана пользователем xzGORzx, 29 мар 2011.

  1. xzGORzx

    xzGORzx New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2011
    Сообщения:
    19
    Здравствуйте!
    Вот такая проблема:
    В ebx у нас находится строка, нужно удалить или заменить на " " ее последний символ. Длинна строки неизвестна.
    Подскажите пожалуйста, как это сделать?
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    xzGORzx
    Наверное, в EBX находится адрес строки? А строки какого типа? Pascal строка с длиной строки в первом символе, С-строка ограниченная нулем, DOS-строка ограниченная символом доллара или UNICODE-строки?
    Как сделать? Найти символ-ограничитель строки и сдвинуть его на один символ "вперед"
     
  3. xzGORzx

    xzGORzx New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2011
    Сообщения:
    19
    Признаться, точно не знаю какой тип. Строка получена командой invoke GetCommandLine и помещена в EBX.
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    xzGORzx
    уточни, GetCommandLineW (Unicode) или GetCommandLineA (ANSI)?
     
  5. xzGORzx

    xzGORzx New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2011
    Сообщения:
    19
    Unicode.
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    xzGORzx
    Ну вот про строки уточнили, теперь по заданию
    Код (Text):
    1. mov edi,ebx
    2. or ecx,-1
    3. mov ax,0
    4. repne scasw
    edi будет показывать на следующее слово после нуля терминирующего строку
    Код (Text):
    1. mov [edi-4],ax
    и последний символ удален
     
  7. xzGORzx

    xzGORzx New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2011
    Сообщения:
    19
    Большое спасибо.