![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 23.11.2012
Сообщений: 428
|
![]()
помогите написать аналог strcmp (Си) на ассемблере, нужно для курсовой обязательно сделать ассемблерную вставку, это единственное место где я придумал ее присобачить, предположительно будет что то типа:
Код:
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 23.11.2012
Сообщений: 428
|
![]()
сейчас извратился вот так, только не знаю как правильно вернуть значение функции, да и размер операндов не совпадает
![]() Код:
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 23.11.2012
Сообщений: 428
|
![]()
потом дошло что я всю строку сравниваю :D ладно буду думать -_- подскажите хоть как посимвольно брать от строки
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
mov ebx, str1
mov al,[ebx] inc ebx jmp again Другая пара регистров для второий строки и сравнивайте. В вашем примере вы сравнили адреса строк а не их содержимое. |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 23.11.2012
Сообщений: 428
|
![]()
можете прокомментировать? не слишком понимаю значение mov al,[ebx], к тому же разве str1 влезет в ebx? да и цикл наверное проще по loop делать
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
mov al,[ebx] читайт из ячейки памяти, чей адрес указан в регистре EBX.
В EBX влезает не строка str1 а ее адрес - чуствуете разницу? loop может и проще, но надо знать длинну строки заранее. Для начала напишите свою версию на С - когда все поймете и все заработает будет легче переводить на АСМ. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 23.11.2012
Сообщений: 428
|
![]()
что то навроде этого?
Код:
Последний раз редактировалось NewLamer&Programer; 18.06.2013 в 00:00. |
![]() |
![]() |
![]() |
#8 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]() Цитата:
![]() Лучше реализовать вариант без strlen, иначе придется и ее писать на asm.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 23.11.2012
Сообщений: 428
|
![]()
я не знаю как узнать длину строки иначе
![]() |
![]() |
![]() |
![]() |
#10 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
Си-строки заканчиваются нуль-терминантом.
Примерно это выглядит так: Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сравнение строк через strcmp(), Си++ | Evielle | Помощь студентам | 12 | 28.04.2012 17:14 |
strcmp,strcasecmp | kilogram | Общие вопросы Delphi | 2 | 10.04.2012 20:31 |
Функция strcmp | bot.bat | Помощь студентам | 12 | 23.11.2011 16:16 |
Функция strcmp() | ts-alan | Общие вопросы C/C++ | 4 | 04.09.2010 23:00 |
strlen,strcpy,strcmp(Visual C++) | crit | Visual C++ | 14 | 09.04.2009 19:10 |