|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.12.2016, 02:48 | #1 |
Новичок
Джуниор
Регистрация: 10.12.2016
Сообщений: 3
|
Запись символа из регистра в строку (Assembler: TASM)
Нужно:
Поменять местами соседние слова в строке (1 со 2; 3 с 4 ...) Если слов нечетное количество - последнее с первым. Мною был разработан примерный алгоритм обработки строки: Посимвольное считывание и нахождение пробела мне удалось реализовать. Далее мне нужно добавить найденный символ в строки TEMPWORD и Mbuffer - согласно алгоритму. Я пробовал: Lea TEMPWORD, [SI], например. В лучшем случае удавалось получить в итоге бинарник - вместо текста в файле. Понятно, что я не правильно добавляю символ в строку. Собственно, на этой операции пока, что остановился. Еще интересует: как в дальнейшем сложить строки Mbuffer и TEMPWORD Помогите, пожалуйста. Код:
We need (FUD)
|
10.12.2016, 11:44 | #2 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Непонятно, что ты хочешь менять: соседнии символы или слова?
Нашедшего выход - затаптывают первым..
|
10.12.2016, 17:42 | #3 |
Новичок
Джуниор
Регистрация: 10.12.2016
Сообщений: 3
|
Из файла считывается строка - буфер, состоящая из слов, разделенных пробелом. Естественно, чтобы поменять местами слова - мне нужно найти пробел, как - либо образом манипулировать с словами. Я задумал сохранять слово в переменной и вставлять после следующего слова. Так как веду поиск пробела я посимвольным сравнением текущего символа с пробелом - можно сохранять не пробелы в то самое временное слово. Насколько я знаю, в асм нет функций, типа find. Вы знаете иной способ выделения слов из строки?
We need (FUD)
|
10.12.2016, 21:07 | #4 | |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Цитата:
А алгоритм, не знаю.. может есть и другие. Твою мыслю можно воплотить например так.. Нужны 2 буфера: для слова(TEMP) и для выходной строки(OUT). Под слово хватит байт-16, а выходной сравнять с входным. Алго примерно такой: 1. Первое слово запоминаешь в буфере(TMP); 2. Второе слово сразу отправляешь в выходной буфер(OUT); 3. Вставляешь следом первое слово; 4. Очищаешь временный буфер. 5. Мотаешь, если не конец строки.. Вот пример на FASM'e. Подразумевается, что считанные из файла данные находятся в BUFF. Длинна строки лежит в LEN. Изменённая строка будет в OUTSTR: Код:
Нашедшего выход - затаптывают первым..
|
|
11.12.2016, 20:25 | #5 |
Новичок
Джуниор
Регистрация: 10.12.2016
Сообщений: 3
|
Спасибо за столь прямой "пинок", вопрос решен!
We need (FUD)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нахождение любого первого символа нижнего регистра в строке | duh96 | Microsoft Office Excel | 10 | 27.05.2016 08:14 |
Написать процедуру подобно insert, которая после каждого вхождения символа C в строку S1 вставляет строку S2 | azalia | Паскаль, Turbo Pascal, PascalABC.NET | 17 | 09.01.2014 12:39 |
assembler.tasm. Запись результата в файл .txt | квант | Помощь студентам | 0 | 15.12.2011 00:12 |
Задачи: Сортировка символьной информации в строке, заданной пользователем.; Чтение и запись данных в файл (Assembler,TASM) | User22 | Помощь студентам | 2 | 01.12.2011 11:40 |
Ввод символьной строки,вывод содержимого соответствующего регистра(TASM) | adgam | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 17.03.2010 08:48 |