Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2007, 12:19   #1
Rumba
 
Регистрация: 04.06.2007
Сообщений: 2
По умолчанию Нужно сделать одну задачу на ЯП Асемблер

Тема работа со строками.
Задание: Заменить группу на символ.
Как мне обяснили это делать надо так: задаёшь строку из скольки то симолов, потом задаёшь начало и конец того куска строки который хочешь заменить(например строка абвгдеё и задаёшь от 3го сивола по 5) и заменяешь символом эот кусок ( должно остаться абNеё)

Вот моя аська 194-242-983 если что пишите.
З.Ы. За мной не заржавеет

Заранее благодарен
Rumba вне форума Ответить с цитированием
Старый 04.06.2007, 14:28   #2
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

Ну, поскольку Делфи может показать ассемблерный код, то надо написать функцию, возвращающую измененную строку, в которую передаешь исходную строку, номера символов, с какого по какой заменять и символ замены. Функция будет выглядеть (на Делфи) примерно так:
function MyReplaceSymbol(SouString: string; SouFrom, SouTo: integer; ReplaceSymbol: char): string;
begin
Result := copy(SouString, 1, SouFrom - 1) + ReplaceSymbol + copy(SouString, SouTo + 1, Length(SouString));
end;

А дальше запускаешь прогу, ставишь точку останова на входе этой функции, подаешь ей что надо на вход, запускаешь функцию и на точке останова нажимаешь F12 и вот тебе ассемблерный код.
Не надо ничего усложнять. Все достаточно тривиально.

Последний раз редактировалось Shuraken; 04.06.2007 в 14:31.
Shuraken вне форума Ответить с цитированием
Старый 04.06.2007, 17:05   #3
Rumba
 
Регистрация: 04.06.2007
Сообщений: 2
По умолчанию

Мне бы на асемблере всё это надо. А деньги бы я через веб мани перевёл или ещё как нибудь. Просто с программированием не дружу=)
Rumba вне форума Ответить с цитированием
Старый 05.06.2007, 19:42   #4
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

lea eax, [ebp-$08];
push eax;
mov ecx, ebx;
dec ecx;
mov edx, $00000001;
mov eax, [ebp - $04];
call @LStrCopy;
push dword ptr [ebp - $08];
lea eax, [ebp - $0c];
mov dl, [ebp + $0c];
call @LStrFromChar;
push dword ptr [ebp - $0c];
lea eax, [ebp - $10];
push eax;
mov eax, [ebp - $04];
call @LStrLen;
mov ecx, eax;
mov edx, [ebp + $10];
inc edx;
mov eax, [ebp - $04];
call @LStrCopy;
push dword ptr [ebp - $10];
mov eax, [ebp + $08];
mov edx, $00000003;
call @LStrCatN;
xor eax, eax;
pop edx;
pop ecx;
pop ecx;
mov fs:[eax], edx;
push $00452014;
lea eax, [ebp - $10];
mov edx, $00000004;
call @LStrArrayClr;
ret;
jmp @HandleFinally;
jmp -$15;

это в асме. В Делфях так:

function TForm1.MyReplaceStr(SouString: string; SouFrom, SouTo: integer;
ReplaceSymbol: char): string;
begin
Result := copy(SouString, 1, SouFrom - 1) +
ReplaceSymbol +
copy(SouString, SouTo + 1, Length(SouString));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := MyReplaceStr(Edit1.Text, 1, 3, 'a');
end;
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите сделать одну фишку! eldar Работа с сетью в Delphi 1 04.08.2008 14:34
Помогите, пожалуйста доделать одну задачу! Максон Помощь студентам 2 25.06.2008 09:00
Нужно перевести задачу с паскаля на DELPHI VDK23RUS Помощь студентам 8 16.06.2007 15:38