Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2013, 20:25   #1
m9co038
 
Регистрация: 18.02.2012
Сообщений: 8
По умолчанию Сместить символы строки, Ассемблер

Добрый день! Помогите пожалуйста написать программу: сместить все символы строки на 1 назад циклично, т.е. было 12345, стало 23451.
Знаю что алгоритм простой, но я в асме полный ноль)
Программа должна быть в виде ассемблерной вставки в visual studio.

Код:
int _tmain(int argc, _TCHAR* argv[])
{
     char *str = new char[32];
     cout << "Введите строку: \n";
     cin >> str;
         MoveASM(str);
     return 0;
}
 
void MoveASM(char* str)
  {
    __asm 
    {
    //Код на ассемблере
 
    }
m9co038 вне форума Ответить с цитированием
Старый 17.09.2013, 21:28   #2
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Код:
void MoveASM(char* str_)
  {
    __asm 
    {
	mov esi,str_
	mov edi,esi
	mov ecx,-2

	a:
	inc ecx
	lodsb
	test al,al
	jnz a

        mov esi,edi
	mov bl,[esi]
	inc esi
	rep movsb
	mov [edi],bl
    }
}
vadimych вне форума Ответить с цитированием
Старый 17.09.2013, 21:56   #3
m9co038
 
Регистрация: 18.02.2012
Сообщений: 8
По умолчанию

Спасибо, но почему-то работает только если длина введенной строки ровно 3 символа, иначе оставляет без изменений.
m9co038 вне форума Ответить с цитированием
Старый 17.09.2013, 22:04   #4
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Не знаю, у меня работает.
┬тхфшЄх ёЄЁюъє:
abcdefghik
bcdefghikaДля продолжения нажмите любую клавишу . . .
vadimych вне форума Ответить с цитированием
Старый 17.09.2013, 22:19   #5
m9co038
 
Регистрация: 18.02.2012
Сообщений: 8
По умолчанию

разобрался, проблема была у меня в коде
m9co038 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача 1-реализована.Задача 2-Найти и вывести символы 2-ой строки не совпавшие с символами 1-ой строки Leshkin Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 12.11.2013 08:57
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27