Вопрос № 83742: Как можно вырезать спецсимволы (цифры,знаки,точки,запятые и т.д.) из строки,заменив их пробелами, и установить указатель на последнию букву в строке?
Т.е. дано:
qwe@!$#%^WCe%^yX36E^@">Q@5 ' '@$
выход:
qwe WCe yX E Q...Вопрос № 83748: Здравствуйте, уважаемые эксперты !
Изучая выпуск рассылки Калашникова № 20, решил пойти немного
дальше, по материалам Хижняка и Попова, так вот:
При записи в "хвост" файла, данные оказываются сдвинуты хотя бы на
длину файла...
Вопрос № 83.742
Как можно вырезать спецсимволы (цифры,знаки,точки,запятые и т.д.) из строки,заменив их пробелами, и установить указатель на последнию букву в строке?
Т.е. дано:
qwe@!$#%^WCe%^yX36E^@">Q@5 ' '@$
выход:
qwe WCe yX E Q
Желательно на tasm'e и без цепочечных операций.
Заранее спасибо.
Отправлен: 22.04.2007, 21:23
Вопрос задал: InviZible (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Пашка
Здравствуйте, InviZible!
Нуууу одну цепочку всё равно пройти придется... я так думаю!
а как вырезать... нуууу надо вырезать спец. символы, ну тогда отталкивайтесь от того что буквы идут от 41h до 5A, это большие буквы, поэтому алгоритм таков...
Считвыем символ за символом из строки и если его код не равен этому приделу(41h - 5A) заменяем его пробелом и двигаемся дальше... ну типо того.
Ответ отправил: Пашка (статус: 2-ой класс)
Ответ отправлен: 22.04.2007, 23:37
Отвечает: Зенченко Константин Николаевич
Здравствуйте, InviZible!
В приложении код который делает это.
input_size размер введеной строки
input_buff сам буфер
Удачи!
Приложение:
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Отвечает: An42
Здравствуйте, InviZible!
Вырезать спецсимволы, заменив их на пробелы можно используя таблицу трансляции.
В программе пояснения
Удачи
Приложение:
Ответ отправил: An42 (статус: 2-ой класс)
Ответ отправлен: 24.04.2007, 17:14
Вопрос № 83.748
Здравствуйте, уважаемые эксперты !
Изучая выпуск рассылки Калашникова № 20, решил пойти немного
дальше, по материалам Хижняка и Попова, так вот:
При записи в "хвост" файла, данные оказываются сдвинуты хотя бы на
длину файла, поэтому одним из вариантов нормального доступа к данным
предлагается коррекция DS. Вопрос заключается в том, на чём основаны
подобные расчёты ? Почему при прибавлении размера файла в параграфах
к DS, в итоге даёт в DS:DX необходимое смещение ?
Спасибо.
Приложение:
Отправлен: 22.04.2007, 22:19
Вопрос задал: CrancV (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, CrancV!
В АЛУ процессора
Смещение из команды(0:15)
+Базовый регистр(0:15)BX или BP
+Индексный регистр(0:15)SI или DI
получается Эффективный адрес
+Сдвинутый на 4 бита(1 параграф) влево Сегментный регистр(0:15)CS,DS,ES,SS,FS,GS
получается Линейный адрес(0:20), который проходит через устройство страничного преобразования и превращается в Физический адрес.
Это всё происходит на аппаратном уровне и для программы прозрачно.
Подробно об этом можно прочитать в "Учебнике" Юрова.
Удачи!
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 23.04.2007, 21:06 Оценка за ответ: 4 Комментарий оценки: Про адресацию вполне доступно, однако суть вопроса вот в чём : Почему именно при коррекции DS - ? на какое-либо количество параграфов получается этот адрес ???