Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Вхождение в строку и поменять регистр


Автор: iglaweb 17.10.2009, 21:57
Задача вот в чем:
Даны две строчки. В первой мы пробегаемся по каждому символу и надо узнать, есть ли данный символ во второй строке - как это определить? делать еще один цикл? и как поменять регистр буквы на противоположный, если найдено совпадение?

Автор: Goodwin98 18.10.2009, 01:36
Цитата

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

Как насчет команды repnz scasb ?

Цитата

и как поменять регистр буквы на противоположный, если найдено совпадение?

Смотреть таблицу кодов cp866 или  cp1251 в зависимости от того на какой ОС должен работать код, и вычитать, либо прибавлять значение кода символа из строки на нужное число.
Если в строке только латинские буквы, то достаточно прибавить 20h, чтобы перевести из прописной в строчную, и, наоборот, вычесть, чтобы перевести из строчной в прописную.

Автор: iglaweb 18.10.2009, 10:02
Спасибо! Остался только 1 вопрос:
Как записать в выходную строчку символ по его коду из регистра?
У меня в al допустим 041h и какой-то набор из решеток и нулей записывается в паскалевскую переменную типа string:
Код

mov byte ptr sybmol, al


Автор: Goodwin98 18.10.2009, 13:36
В паскале вроде бы первый байт строки - это ее длина, а уже дальше сами символы.

Автор: iglaweb 18.10.2009, 14:09
спс=) забыл, что первый символ строки - ее длина

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)