• Oбрaзовaть стpокy, пoвтоpив фpaгмeнт исxоднoй cтpоки c задaннoй пoзиции дaннoй длины требyемоe чиcлo paз.

    Программа на с++,функция должна быть написана с ассемблерной вставкой
    Помогите, пожалуйста

Ответы 3

  • здесь же просто вставка, а не функция... хотя если человек хоть немного знает тему, то преобразовать ничего не стоит...
    • Автор:

      evie
    • 5 лет назад
    • 0
  • Спасибо вам большое! То, что нужно, можно без функции
  • Думаю, что-то типа того.#include <iostream>#include <stdio.h>using namespace std;int main(){    const int n = 100;    char *C = new char[n];    int p // позиция    int l // длина    int k // повторения    cout << "String C: ";    cin >> C;    cout << "Pos: ";    cin >> p; p--;    cout << "Length: ";    cin >> l;    cout << "N: ";    cin >> k;    char *V = new char[l*k+1];    if ((p >= 0) && (l > 0) && (k > 0) && ((strlen(C) - p) >= l) && (p <= strlen(C))) //проверка ввода    {        __asm        {            mov ebx, k;           // количество повторений            mov edi, V         // адрес приёмника            m1 : cmp   ebx, 0  // сравнение                 je   exit1    // если EBX = 0, то переход на exit1                 mov   ecx, l  // длина строки                 mov   esi, C  // адрес источника                 add   esi, p  // с заданной позиции             m2 :                mov al, [esi]    //из ESI                mov [edi], al    // запись в EDI                inc edi            // EDI+1                inc esi            // ESI+1                loop  m2        // цикл EСХ раз                dec ebx         // EBX-1                jmp m1             // переход на m1            exit1 : mov[edi], 0         }        cout << "V: ";        cout << V << endl;    }    else cout <<  "Error " << endl;    system("pause");}
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years