|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.04.2011, 20:08 | #1 |
Новичок
Джуниор
Регистрация: 31.03.2011
Сообщений: 2
|
вычисление длины строки
привет! помогите пожалуйста, мне нужно написать процедуру, вычисляющую длину строки, ассемблер не понимаю, вот код на эту задачу(немного разбирали похожее на паре), но почему то не работает...
Код HTML:
.386 .model flat, stdcall option casemap: none includelib kernel32.lib .code strlen proc uses eax ebx ecx edi string: dword, retvail: dword cld mov ax, ds mov es, ax mov edi, string mov ecx, 2048 mov al, END_OF_STRING repne scasb ; сканирование по байтам(будет повторятьсся до тех пор, пока не встретиться ноль или другой какой то элемент, который мы запрограмировали(в отличие от rep) dec edi ; remove END_OF_STRING symbol sub edi, string ; substract addres of string from last symbol mov ebx, retval; return value mov[ebx], edi ret strlen endp main proc invoke strlen, ADDR test string, ADDR len mov eax, len invoke ExitProcess, 0 main endp end main по идее типа она(прога) выдает нам длину строки в байтах...насколько я поняла..типа адрес начала строки минус адрес конца строки... и скажите, как тут правильно код вставлять, чтобы выглядел как ассемблеровский? Спасибо! |
01.04.2011, 20:20 | #2 |
Адский тунеядец
Форумчанин
Регистрация: 11.06.2010
Сообщений: 164
|
Так не проще?
Код:
А на счёт твоего - я его посмотрел. Там в половине строчек смысла нет. Я попробовал исправить. В debuggere посмотрел - все работает хорошо. Получается правильно. Рассматривал на примере Hello World. Вот программа: Код:
Здесь строчку Код:
Вот эту строчку: Код:
Код:
А на счет команды lea - она загружает в первый операнд адрес второго, то есть строчки Код:
Код:
Последний раз редактировалось Ibanez Wizard; 01.04.2011 в 21:13. |
01.04.2011, 21:57 | #3 |
Форумчанин
Регистрация: 16.01.2011
Сообщений: 325
|
Ibanez Wizard, что бы не лезть в дебаггер раз за разом, выведи результат в окно:
Код:
|
01.04.2011, 22:06 | #4 |
Адский тунеядец
Форумчанин
Регистрация: 11.06.2010
Сообщений: 164
|
vadimych, если я буду выводить на экран, то я увижу только результат, да и к тому же мне бы пришлось вывод на экран потом из исходника удалять (чтобы выложить готовый вариант). В отладчике я себя увереннее чувствую.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вычисление длины строки | Agafon | Microsoft Office Word | 12 | 17.11.2010 15:43 |
измерение длины строки | Agafon | Общие вопросы Delphi | 6 | 11.11.2010 15:13 |
Функция получения длины строки в C# | kloffelin | Помощь студентам | 12 | 26.10.2010 22:39 |
Поиск длины строки | beda | Microsoft Office Word | 5 | 21.06.2010 14:27 |
Строки неизвестной длины в си | abr_question | Общие вопросы C/C++ | 18 | 22.01.2010 00:26 |