Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9

[новичок] проверка существования адреса

02.12.2010, 21:08. Показов 1725. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, меня очень интересует каким образом можно проверить существование (доступность) ячейки памяти. Допустим у нас есть программа с адресным пространством с 400000 до 500000 , если я попытаюсь сделать на ассемблере mov [500001],1h то это несомненно вызовет ошибку, потому-что такой адрес будет уже за пределами программы.

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

Может быть на ассемблере есть небольшая структурка которая может проверить адрес, входит ли (или находится за пределами) адресного пространства программы.

p.s. я бы использовал и поиск, но не знаю как задать вопрос чтобы получить информацию именно по моему вопросу...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2010, 21:08
Ответы с готовыми решениями:

Проверка четности адреса кода
Помогите пожалуйста, понять не могу.. Задание: Элемент исходного массива суммируется с константой, если она имеет четный адрес и Размер...

Можно ли сделать проверку существования адреса эл.почты
Поставил на сайт форму для отправки письма, но обнаружилась проблема, связанная с невнимательностью, ошибки в обратном адресе через раз....

Проверка существования id
Короче мне нужно чтоб выводило если нету этого ид то чтоб оно писало такого ид нету

10
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
02.12.2010, 21:19
Зачем вам проверять существует ли аддрес в аддресном пространстве программы ? Ну или зачем вам вообще обращаться по каким-либо аддресам напрямую ?
0
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
02.12.2010, 21:23  [ТС]
дело в том что обращение происходит само по себе и в некоторых случаях каким-то невообразимым способом идет попытка обращения к несуществующим адресам, я конечно понимаю что лечить нужно проблему и сейчас работаю над тем, чтобы найти почему образуется несуществующий адрес, но как альтернативу я хотел просто воткнуть проверку <если полученный адрес не существует, то пропустить команду mov>
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
02.12.2010, 22:38
Как вы уже заметили, лечить нужно причину,а пропускать mov это даже глупо как-то...
Способы, которыми можно поймать обращения к несуществующему, конечно есть, но просто мне кажется что это только отвлечет от поиска ошибки.
0
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
02.12.2010, 23:58  [ТС]
и все же, если знаете такие способы то буду за них признателен, искать ошибку я конечно продолжу...
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
03.12.2010, 04:52
ohos, имена переменных и процедур придумали специально для того, чтобы не задумываться по какому адресу эта переменная или процедура расположена. Существует также понятие логических и физических адресов, то есть, если ты считаешь что адрес в твоей программе равен 500001 то это совершенно не значит что в оперативной памяти он расположен в 500001 байте. В связи с тем, что ты работаешь на многозадачной операционной системе в памяти находятся одновременно несколько программ, но каждая из них считает, что она там единственная
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
03.12.2010, 04:57
Mikl___, у ТС скорее всего где-то происходит выход за пределы массива или что-то в этом роде, и программа падает при попытке записи в недопустимое место. Вот он и пытается обойти это, убрав сообщение об ошибке
0
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
03.12.2010, 07:07
Нужно поставить брейк на этот адрес в отладчике и посмотреть.
0
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
03.12.2010, 23:34  [ТС]
все дело в том, что функции периодически даются различные адреса и я ни как не могу понять откуда они берутся, я полагаю что адреса передаются ей, но я не понимаю почему код передающий адрес с ячейкой периодически ссылается на разные места, может он является переменной?

т.к. проблема возникает в одной и той же функции я задумался о том, чтобы найти все вызовы функции, но не помню как поставить брикпоинт, чтобы остановка произошла на предыдущей строчке, не подскажите как это сделать?
0
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
04.12.2010, 07:25
Адрес точки вызова находится в стеке.

Добавлено через 20 минут
1) Запускаешь olly
2) File->open. Выбираешь свой exe
3) Trace->Set Condition. Выбираешь Memory range 1 accesed и вписываешь туда тот адрес по которому идёт обращение on R/W.
4) Debug->Run. Программа дойдёт до места ошибки
5) Правой кнопокой по инструкции обращения к памяти Edit->Fill with NOPs. Инструкция будет заменена нопами.
6) Трассируешь (F8) до возврата в точку вызова
0
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
04.12.2010, 20:41  [ТС]
благодарю за ответы, так как я уже получил ответ на вопрос по теме этого топика думаю его можно закрывать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.12.2010, 20:41
Помогаю со студенческими работами здесь

Проверка на существования ID
Всем привет !!! :) У меня такой вопрос можно ли вообще проверить в PHP существует ли определенный ID в базе данных ? То есть у меня...

Проверка существования строки
Суть в следующем: Нужно написать .bat файл, который проверяет hosts на наличие определенного строки, например, 132.45.60.1 mysite.ru ...

Проверка существования треугольника
program function trg(x,y,z:real):boolean; begin trg:=(x+y&gt;z)and(x+z&gt;y)and(y+z&gt;x) end; procedure vyvod(x,y,z:real); begin if...

Проверка существования потока
Доброго времени суток всем , подскажите пожалуйста как проверить поток запущен ,не запущен или приостановлен? Что-то типа такого : ...

Проверка существования записи
Использую Delphi + Access. Процедура добавления а за одно и существования записи. procedure TfrmDodIzUsers.BitBtn1Click(Sender: TObject);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru