Отговори на тема  [ 4 мнения ] 
Директен достъп до памет 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Ное 28, 2005 10:49 am
Мнения: 86
Местоположение: Русе
Мнение Директен достъп до памет
Работя със средата Borland C++ Builder 6. Искам да направя следното:

*int *p;
p=800; // адрес 800
*p=12; // запиши 12 на адрес 800

Мисля че това е и равносилно на нещо от сорта

asm{
mov eax,10
mov esi,eax
mov [esi],11
}
И в двата случая ми дава "Access violation..."
С две думи искам след като знам определен адрес в паметта, да мога да чета и да записвам от/в този адрес.
Пробвах това с едно досовско С, и там нямаше проблем. Само че там адресацията на паметта е 16-битова, а на мен ми трябва 32-битова.
Това което си мисля е да не би да има значение реален/защитен режим и ако да, как да реша проблемът с прекия достъп до паметта в Borland C++ Builder 6.
Благодаря


Съб Мар 21, 2009 11:56 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2277
Мнение 
Грешката говори сама за себе си: Access violation... - нарушил правата за достъп до тая памет - в общия случай тя не е твоя !!!. Това, че в DOS можеш да омажеш цялата памет, не ти дава същите възможности и за всяка друга OS. Ако искаш да пипаш директно в паметта трябва да имаш определени права за тая памет.


Съб Мар 21, 2009 12:35 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 7:26 pm
Мнения: 672
Мнение 
Единствения начин който знам е:
#include <dos.h>
void pokeb (unsigned int segment, unsigned int offset, char value);
Доколкото съм запозна адресите до 1000 се използват за вектори на прекъсвания на ОS-a


Съб Мар 21, 2009 1:22 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 02, 2005 9:02 pm
Мнения: 73
Местоположение: Варна
Мнение 
В защитен режим няма как да стане, там адресите в програмата и паметта не се съвпадат. Но има начин да се направи 32 битов достъп в реален режим (разбирай чист ДОС) - потърси за voodoo memory model


Съб Мар 21, 2009 5:09 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 4 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни