![]() |
|
|
![]()
|
|
| I_Am_Rock |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: нет Всего: 15 |
Привет. Я новичок.
Такой вопрос В этом куске кода (MASM если что) адрес значения Text1 ("Putin") передается в eax. Увеличиваем его на единицу.
Хочу передать адрес в Text1 (чтобы стало "utin"). Пробую так...
...не получается. Как надо сделать? Гуглил, но ничего не нашел.((( Это сообщение отредактировал(а) I_Am_Rock - 22.9.2009, 15:45 |
||||
|
|||||
| Goodwin98 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 1.7.2009 Где: Deeptown Репутация: 4 Всего: 5 |
Это сообщение отредактировал(а) Goodwin98 - 22.9.2009, 16:03 |
|||
|
||||
| I_Am_Rock |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: нет Всего: 15 |
Это MASM? У меня не работает, пишет - invalid instruction operands
Добавлено @ 16:18
В 1 строчке - зачем мне помещать в eax что-то? Там что нужно уже стоит. Именно то, что там стоит нужно сделать адресом Text1 Ругается на вторую строчку. Я попробовал использовать только 3-ю, пишет - "Puti", а мне нужно чтобы не было первого символа - "utin". Но вообще смысл в том, что я хочу понять как произвести обратную операцию от mov eax, offset Text1 Это сообщение отредактировал(а) I_Am_Rock - 22.9.2009, 16:40 |
||||
|
|||||
| Goodwin98 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 1.7.2009 Где: Deeptown Репутация: 4 Всего: 5 |
Во-первых следует помнить, что text1 - это метка, которой соответствует какой-то аддрес( процедуры, строки, переменной и т.п). Когда компилятор встречает offset text1, он подставляет вместо него аддрес строки. Естественно, что при выполнении программы уже никаких меток нету. Поэтому в вашем случае можно либо перенести строчку( что я и сделал), либо использовать указатель на нее.
Это сообщение отредактировал(а) Goodwin98 - 22.9.2009, 18:49 |
||||
|
|||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: нет Всего: 15 |
Ничего не получается! (((
Вообще я пробую на другом примере, а с Putin привел для наглядности. Я пробую вот на каком примере. Там есть кнопка. При нажатии на нее берется строка из ТекстБокса, потом делается то, что я как раз хочу сделать ("убрать" первый символ), потом все буквы строки делаются большими и выводятся в Лейбл. Всё получается, только вот никак не убирается первый символ. ((( Причем я хочу сделать именно так - поместив адрес в регистр и т.д. Я хочу понять сам принцип. См. код примера в файле. Он небольшой, и место для изменений я выделил комментариями с восклицательными знаками.
Помогите, пожалуйста. Уже мозг кипит. Присоединённый файл ( Кол-во скачиваний: 3 )
izmt.rar 1,55 Kb |
|||
|
||||
| Goodwin98 |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 1.7.2009 Где: Deeptown Репутация: 4 Всего: 5 |
Эх. Вы не можете изменить по ходу программы аддрес text1. Он постоянный.
Для вашей программы проще всего сделать так.
Но т.к. вам нужн через eax, то тогда так.
Или так.
Это сообщение отредактировал(а) Goodwin98 - 22.9.2009, 21:32 |
||||||
|
|||||||
| piritus |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 226 Регистрация: 3.1.2007 Где: Сибирь Репутация: нет Всего: 3 |
Как вариант:
--------------------
|
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: нет Всего: 15 |
Попробовал последний - работает. Спасибо.
А, ясно... Т.е. адрес переменных изменить нельзя - я правильно понял? Но почему тогда можно изменить адрес pText? Только потому, что он еще в data прописан как offset? Добавлено @ 21:55 Тоже удобный вариант. Благодарю Вы не можете изменить по ходу программы аддрес text1. Он постоянный. Получается можно? Судя из кода piritus Это сообщение отредактировал(а) I_Am_Rock - 22.9.2009, 21:58 |
|||
|
||||
| Goodwin98 |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 1.7.2009 Где: Deeptown Репутация: 4 Всего: 5 |
Аддрес - нет, только их содержание.
Тут не меняемтся ее аддрес, а только содержание pText - это просто переменая, как напр hwndLabel1, в которой сначала находится аддрес text1, а потои мы его меняем. Советую посмотреть на программу из-под отладчика для лучшего понимания.
В этом коде копируется строчка на др место. Это сообщение отредактировал(а) Goodwin98 - 22.9.2009, 22:02 |
||||||
|
|||||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: нет Всего: 15 |
А как же код piritus? Там же хоть и через API, но ведь меняется именно адрес переменной. И потом в дальнейшем коде можно применять
И слово выводится уже со второй буквы. Еще раз спасибо. Это сообщение отредактировал(а) I_Am_Rock - 22.9.2009, 22:03 |
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: нет Всего: 15 |
Вопрос снят! Действительно, отладчик - важнейший инструмент. Буду почаще им пользоваться. |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |