| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm для начинающих > передать адрес |
| Автор: I_Am_Rock 22.9.2009, 15:45 | ||||
| Привет. Я новичок. Такой вопрос В этом куске кода (MASM если что) адрес значения Text1 ("Putin") передается в eax. Увеличиваем его на единицу.
Хочу передать адрес в Text1 (чтобы стало "utin"). Пробую так...
...не получается. Как надо сделать? Гуглил, но ничего не нашел.((( |
| Автор: Goodwin98 22.9.2009, 16:01 | ||
|
| Автор: I_Am_Rock 22.9.2009, 16:05 | ||||
| Это MASM? У меня не работает, пишет - invalid instruction operands Добавлено @ 16:18
В 1 строчке - зачем мне помещать в eax что-то? Там что нужно уже стоит. Именно то, что там стоит нужно сделать адресом Text1 Ругается на вторую строчку. Я попробовал использовать только 3-ю, пишет - "Puti", а мне нужно чтобы не было первого символа - "utin". Но вообще смысл в том, что я хочу понять как произвести обратную операцию от mov eax, offset Text1 |
| Автор: Goodwin98 22.9.2009, 18:32 | ||||
Во-первых следует помнить, что text1 - это метка, которой соответствует какой-то аддрес( процедуры, строки, переменной и т.п). Когда компилятор встречает offset text1, он подставляет вместо него аддрес строки. Естественно, что при выполнении программы уже никаких меток нету. Поэтому в вашем случае можно либо перенести строчку( что я и сделал), либо использовать указатель на нее.
|
| Автор: I_Am_Rock 22.9.2009, 20:24 | ||
| Ничего не получается! ((( Вообще я пробую на другом примере, а с Putin привел для наглядности. Я пробую вот на каком примере. Там есть кнопка. При нажатии на нее берется строка из ТекстБокса, потом делается то, что я как раз хочу сделать ("убрать" первый символ), потом все буквы строки делаются большими и выводятся в Лейбл. Всё получается, только вот никак не убирается первый символ. ((( Причем я хочу сделать именно так - поместив адрес в регистр и т.д. Я хочу понять сам принцип. См. код примера в файле. Он небольшой, и место для изменений я выделил комментариями с восклицательными знаками.
Помогите, пожалуйста. Уже мозг кипит. |
| Автор: Goodwin98 22.9.2009, 21:22 | ||||||
| Эх. Вы не можете изменить по ходу программы аддрес text1. Он постоянный. Для вашей программы проще всего сделать так.
Но т.к. вам нужн через eax, то тогда так.
Или так.
|
| Автор: piritus 22.9.2009, 21:41 | ||
Как вариант:
|
| Автор: Goodwin98 22.9.2009, 21:55 | ||||||
Аддрес - нет, только их содержание.
Тут не меняемтся ее аддрес, а только содержание pText - это просто переменая, как напр hwndLabel1, в которой сначала находится аддрес text1, а потои мы его меняем. Советую посмотреть на программу из-под отладчика для лучшего понимания.
В этом коде копируется строчка на др место. |
| Автор: I_Am_Rock 22.9.2009, 22:01 | ||||
А как же код piritus? Там же хоть и через API, но ведь меняется именно адрес переменной. И потом в дальнейшем коде можно применять
И слово выводится уже со второй буквы. Еще раз спасибо. |
| Автор: I_Am_Rock 22.9.2009, 22:19 | ||
Вопрос снят! Действительно, отладчик - важнейший инструмент. Буду почаще им пользоваться. |