Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
axicose
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 25
1

Копирование и добавление строк на С++ через процедуру ассемблера

11.05.2014, 04:20. Просмотров 371. Ответов 7
Метки нет (Все метки)

здравствуйте! я рылся много в инете, но не нашел именно функций копирования и добавления строк через процедуру ассемблера на С++
DOS, не могу понять как переделать под плюсы, чтобы работало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2014, 04:20
Ответы с готовыми решениями:

Используя функцию копирования строк, организуйте конкатенацію и копирование строк в четвертый массив, содержащий полные имена
Пожалуйста с этим заданием. Написать программу, которая описывает четыре...

Добавление неодинаковых строк в массив строк
Здравствуйте! Возникла такая проблема, не могу понять как реализовать...

Копирование строк
Нужно сравнить две строки не учитывая пробелы. Ошибка где-то в копировании a1...

копирование строк
ребят, не подкажете как скопировать строку из искомой, начиная с символа а и...

копирование строк
Как на языке Си скопировать из строки s1 в строку s2 n символов с k-ой позиции?

7
newbie666
Заблокирован
11.05.2014, 05:24 2
Цитата Сообщение от axicose Посмотреть сообщение
процедуру ассемблера на С++
DOS
причём туту DOS? :rofl:
Assembler является специфической штукой под конкретный процессор... Под x86/ x64 популярен макро ассемблер - он же MASM. По поводу копирования, ну ты определись с длинной строки и с её форматом.... Потом хреначь указатель нового динамический созданного 4-х байтового массива в EAX, потом оттуда MOV куда угодно.... Не ну на самом деле, что может быть не понятно.... Конкретный вопрос озвучь
0
Archi0
28 / 14 / 5
Регистрация: 18.07.2013
Сообщений: 177
11.05.2014, 06:38 3
У меня есть вопрос, а что это как-то ускоряет копирование строки? подобные функции по моему итак написаны с учетом, что в регистр можно положить не один чар.
0
newbie666
Заблокирован
11.05.2014, 09:04 4
давай сначала определимся, ты под x86 код лепишь?
0
Archi0
28 / 14 / 5
Регистрация: 18.07.2013
Сообщений: 177
11.05.2014, 10:07 5
x86 обычно. Если в 64 bit по другому расскажи. По моему предположению при копировании строки алгоритм как в memcpy, который опять по моему предположению идет копирование кусками размером в системный платформа зависимый int. Ну потом отдельно не кратный размеру int хвост байт копируется.
0
axicose
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 25
11.05.2014, 14:06  [ТС] 6
задание в лабе такое.. -_-
сделать подобие функций strlen, strcpy, strcmp и strcat только на ассемблере

ну вот strlen и strcpy я уже сделал

Добавлено через 10 минут
тобишь я делаю обычные функции на плюсах, а внутри ассемблеровские вставки

Добавлено через 27 минут
вот пример сравнения строк, не могу понять, почему она не работает..
вернее работает, но не так, как хотелось бы. по идее если строки равны, то вернется 1, если нет, то 0
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
int  strcmp_(const char*  str1, const char* str2)
{
    int  res = 1;
    __asm
    {
        push ebx
        push ecx
        push edx
        mov eax, 1
        mov ebx, str1
        mov ecx, str2 
        again:
            mov dh, [ebx]
            mov dl, [ecx]
            cmp dh, 0
            je next
            cmp dl, 0
            je next
            inc ebx
            inc ecx
            cmp dh, dl
        je again
        fl:
        mov eax, 0
        jmp last
        next:
        cmp dh, 0
        jne fl
        cmp dl, 0
        jne fl
        last:
        pop edx
        pop ecx
        pop ebx
 
        mov res, eax
    }
       return  res;
}
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
11.05.2014, 15:09 7
21 строка должна быть до инкрементов.
0
axicose
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 25
11.05.2014, 19:41  [ТС] 8
спасибо, но на результат это особо не повлияло..
оно просто выводит мне результат в строке 24, то бишь если я там в eax помещу 1 то и выведется 1 даже если строки не равны между собой..
а что там не так, не могу понять

Добавлено через 4 часа 26 минут
как сделать функцию strcat, я не могу понять.. там внутри используется функция strcpy
0
11.05.2014, 19:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2014, 19:41

копирование строк
Скопировать из файла F1 в файл F2 все строки, кроме той строки, в которой...

Копирование Строк
В общем, я продолжаю разборки с С(++) и у меня снова вопрос, ответ на который...

Копирование строк
И опять столкнулся с проблемой. Описываю функцию, которая копирует k символов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru