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

Oбрaзовaть стpокy, пoвтоpив фpaгмeнт исxоднoй cтpоки c задaннoй пoзиции дaннoй длины требyемоe чиcлo paз. Программа на с++,функция должна быть написана с ассемблерной вставкой Помогите, пожалуйста
Гость
Ответ(ы) на вопрос:
Гость
Думаю, что-то типа того. #include #include 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 << "\nV: ";         cout << V << endl;     }     else cout <<  "\nError " << endl;     system("pause"); }
Не нашли ответ?
Ответить на вопрос
Похожие вопросы