Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Assembler > Сколько памяти


Автор: Maaniv 22.09.01, 21:43
Кто знает как определить объем памяти, если ее более 64 метров ???

Автор: NKritsky 24.09.01, 10:16
Руками.
Проверяй первый байт каждого мегабайта на запись/чтение.
PS Лучше делать это на CLI, чтобы никто не вклинился, и ты никому не подгадил.

Автор: Maaniv 26.09.01, 21:18
Сначало так и делал, но на пнях третьих прога не пашет (либо в мамках дело, либо в самих камнях) - выдает нарушение общей защиты (с глюкавыми последствиями) или реБутится. Скорее всего объем можно определить с помощью BIOS (чтение устройств...), но если есть другой способ - хотелось бы его узнать.

Автор: Organic 30.09.01, 06:29
а через реестр не пробовал?
HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP\System Resources\Physical Memory\.Translated
только вот как его раскодировать, я не знаю... там двоичный массив.
там же где-то можно найти частоту и модель проца (в ...\HARDWARE\...) и еще кое чего интересного.
все проги, кстати, широко используют этот метод...

Автор: Jin X 16.10.01, 19:30
mov ax,0E801h
int 15h
jc OnlyBelow64 ; Если здесь произойдет прыжок, то будет 66496 КБайт, данная фукнция не поддерживается :(
shl edx,16
shr edx,10
and ecx,0FFFFh
add edx,ecx
jmp Add1024
OnlyBelow64:
xor edx,edx
cli
mov al,17h
out 70h,al
in al,71h
xchg dx,ax
mov al,18h
out 70h,al
in al,71h
sti
mov dh,al
Add1024:
add edx,1024
На выходе EDX = Количество килобайт памяти

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)