| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > Обработка строковых переменных |
| Автор: Rolana 13.12.2013, 18:01 | ||
| Ооооочень нужна помощь. У нас Ассемблер изучается ознакомительно, а лабораторные сдавать надо. Задание: Ввести строку текста. Проверить, является ли этот текст гиперссылкой в формате «http:\\www.abc.ua». Если да, то напечатать сообщение: «Это гиперссылка» в другом случае: «Это не гиперссылка». Был дан пример работы со строковыми переменными:
Я что-то там пыталась переделывать. Например, чтобы подсчитывало длину строки... на этом и заглохло всё(( |
| Автор: ФедосеевПавел 14.12.2013, 08:54 | ||
| Rolana, такие вещи проверяются при помощи регулярных выражений. Для учебной задачи на асм под DOS, полагаю подойдёт и сильно упрощённая проверка. Проверку можно выполнить в такой последоватеьности. 1. Вызов процедуры upper case - привести все символы строки к верхнему регистру - можно ограничиться лишь латинскими символами от 'a' до 'z'. 2. Проверить, что первые 11 символов в строке равны другой строке-шаблону 'HTTP:\\WWW.' 3. Проверить, что следующие символы до точки входят в диапазон от 'A' до 'Z'. 4. Проверить, что осталось 2 символа и они равны строке-шаблону 'UA'. На время отладки, можно строку не вводить, а задать её в сегменте данных - чтоб рука набивкой тестов не переутомилась. string db 'http:\\www.abc.ua' Попробуй начать. Реализуй поэтапно в виде подпрограмм. А потом всё соберёшь в единую прграмму. Кое-что уже реализовано - сравнение строки с шаблоном. Подброшу отнюдь не идеальный фрагмент UpperCase. Для преобразования после проверок используется вычитание потому, что http://uk.wikipedia.org/wiki/ASCII, прописные символы расположены раньше строчных
Хочу обратить твоё внимание на некорректный вызов функций DOS (прерывание 21h): 1. При выводе строки (int 21h ah=09h) лишний inc dx 2. При завершении программы вызов не ax=4c00h, а ah=4ch. Твой вызов был бы корректен, если бы в al загружалось что-то осмысленное - код возврата. ----------------------- И ещё. Не обижайся, но ассемблер не преподают гуманитариям, значит его основы будут нужны тебе на других предметах. Учи или иди работать продавцом, секретарём или кем-нибудь с низким порогом вхождения в специальность. |
| Автор: Rolana 17.12.2013, 14:00 |
| Я сдала лабораторную) Благодарю! |
| Автор: ФедосеевПавел 17.12.2013, 23:33 |
| Молодец! |