Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Смещение символов в строке

91K
17 сентября 2013 года
telogrejka
1 / / 17.09.2013
Добрый день! Помогите пожалуйста написать программу: сместить все символы строки на 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
    {
    //Код на ассемблере
 
    }
414
18 сентября 2013 года
CassandraDied
763 / / 24.05.2012
Ох, давно я на асме не кодил...

Код:
void MoveASM(char* str, size_t cnt)
{
    size_t len = strnlen_s(str, 32) - 1;
    __asm
    {
    push eax
    push ecx
    push ebx
    mov ecx, cnt
    lbl1:
    push ecx
    xor eax, eax
    mov ebx, str
    mov al, byte ptr [ebx]
    push eax
    mov ecx, len
    mov esi, str
    inc esi
    mov edi, str
    rep movsb
    pop eax
    mov ebx, str
    add ebx, len
    mov byte ptr [ebx], al
    pop ecx
    dec ecx
    jecxz ext
    jmp lbl1
    ext:
    pop ebx
    pop ecx
    pop eax
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    char *str = new char[32];
    std::cout << "Введите строку:";
    std::cin >> str;
    MoveASM(str, 5);
    std::cout << str;

    std::cin.get();
    return 0;
}

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог