Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как узнать адрес переменной? Ликбез продолжается 
:(
    Опции темы
zalex
Дата 4.11.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 13.5.2005

Репутация: нет
Всего: 2



Привет всем!

Есть ячейка памяти, обозванная мною x
x db 5
к примеру. Вопрос в следующем - как узнать адрес (номер) этой ячейки. (Типа опреатора addr(x) на Паскале).

PM MAIL   Вверх
rsm
Дата 4.11.2005, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 1
Всего: 62



Код

lea eax,x

PM MAIL   Вверх
zalex
Дата 4.11.2005, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 13.5.2005

Репутация: нет
Всего: 2



ОК, вопрос исчерпан. Спасибо.
PM MAIL   Вверх
oleg1973
Дата 4.11.2005, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



Код

mov eax,X



--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Akina
Дата 4.11.2005, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата(zalex @ 4.11.2005, 19:04)
ОК, вопрос исчерпан.

Ну-ка, какой сегментный регистр будет использован? И, главное, почему?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
St. Andrew
Дата 5.11.2005, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.3.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 8



Цитата(oleg1973 @ 4.11.2005, 18:09)
Код

mov eax,X

Позвольте узнать, а это вообще правильная команда? Вообще я мало работал с e... регистрами, но размеры их - 32 бита , а размер Х - байт Насколько я понимаю, команда просто переместит байт в регистр, расширив его до размера двойного слова или же компилятор ругнется....но адрес-то тут при чем?

Вопрос про сегментный регистр актуален! Но не буду лишать zalexа возможности найти ответ самостоятельно! Читаем про директиву Assume и директивы упрощенной сегментации! smile А может - и еще что-то есть...
--------------------
Оглянитесь вокруг! В мире так много прекрасного!
PM MAIL WWW ICQ   Вверх
Neitron
Дата 8.11.2005, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: нет
Всего: 5



Может все же так?
Код

mov eax,offset x;


Это сообщение отредактировал(а) Neitron - 8.11.2005, 10:41


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
oleg1973
Дата 8.11.2005, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



Neitron
смортя какой компилятор использовать
fasm
Код

mov eax,X

......
X:
        db 5

данный код занесет в еах АДРЕС ячейки памяти Х
а вот
Код

mov eax,byte [X]

занесет значение ячейки памяти в еах


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
zalex
Дата 9.11.2005, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 13.5.2005

Репутация: нет
Всего: 2



2 Akina, если не ошибаюсь - то по логике сегментный регистр будет DS, ибо в DS определена X.
Сорри, что не ответил раньше - абстрагировался от мира и читал Абеля.
PM MAIL   Вверх
zalex
Дата 10.11.2005, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 13.5.2005

Репутация: нет
Всего: 2



Цитата(St @ 5.11.2005, 02:38)
Цитата(oleg1973 @ 4.11.2005, 18:09)
Код

mov eax,X



Вопрос про сегментный регистр актуален! Но не буду лишать zalexа возможности найти ответ самостоятельно! Читаем про директиву Assume и директивы упрощенной сегментации! smile А может - и еще что-то есть...

Теперь с уверенностью отвечаю - DS. Т.к. если нет директивы Assume, то по умолчанию за сегмент данных отвечает DS. А именно в сегменте данных и находится X.
До директив упрощенной сегментации пока не дошел, хотя впечатление уже слождилось.

Спасибо за заботу о новичках. Кроме шуток, методы этого раздела форума заслуживают уважения.
PM MAIL   Вверх
oleg1973
Дата 10.11.2005, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



zalex
в принципе в мсдосе при запуске СОМ файла, CS=DS
а вот в ЕХЕ может быть и не равен
так что для уверености можно сделать
Код

push cs
pop ds
mov eax,X



п.с.
винды это не касается )


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
rsm
Дата 10.11.2005, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 1
Всего: 62



Цитата(Akina @ 5.11.2005, 01:50)
какой сегментный регистр будет использован?

Зависит от компилятора - какой сегмент будет наиболее удобен, такой он и возьмет. Например:
Код

LEA EAX,DWORD PTR SS:[EBP-5] ; LCC
LEA EAX,DWORD PTR DS:[403000] ; MASM32

PM MAIL   Вверх
oleg1973
Дата 10.11.2005, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



rsm
SS:[EBP-5] к делу не относится
это стековый фрейм


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
rsm
Дата 10.11.2005, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 1
Всего: 62



Цитата(oleg1973 @ 10.11.2005, 18:24)
это стековый фрейм

Какая разница, откуда конкретно берется адрес переменной - из стэка или из сегмента данных? Главное что:
1. Вариантов получается два (стэк и сегмент данных);
2. Оно работает.
PM MAIL   Вверх
oleg1973
Дата 10.11.2005, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



Цитата
Зависит от компилятора - какой сегмент будет наиболее удобен, такой он и возьмет

не верно )
сегменты явно задаются (в асм компиляторах)


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.