В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
УмныйЛёд
УмныйЛёд
10.07.2022 06:24 •  Информатика

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

Показать ответ
Ответ:
skeych
skeych
04.10.2020 18:49
Думаю, что-то типа того.

#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 << "\nV: ";
        cout << V << endl;
    }

    else cout <<  "\nError " << endl;

    system("pause");
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота