• Lunes 18 de Noviembre de 2024, 18:42

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Hoodman

Páginas: [1]
1
C/C++ / Memoria Actual
« en: Lunes 21 de Junio de 2004, 15:36 »
Necesito hacer un programa usando codigo de C y/o Assembler que tenga una lista enlazada de n elementos. Los elementos de la lista se van a ir agregando automaticamente y cada vez que se agregue un elemento debo de imprimir en pantalla cuanta memoria queda en el sistema.

Mi problema esta en que no se que tipo de memoria se va ocupando cuando agrego un elemento a lista enlazada. El codigo que genera la lista ya lo hice, y le he puesto codigo que he encontrado a ver si me devuelve la memoria que queda. En todas la pruebas siempre me devuelve el mismo numero a veces 640k o dependiendo de la memoria que le asigne al programa atravez de windows. Por ejemplo le doy un click derecho en el archivo ejecutable de mi programa, en propiedades voy a memoria y le pongo en la memoria convencional un total de 80 y entorno inicial 256, y a toda las demas memoria que aparecen (extendida EMS y SMS) le pongo ninguna y entonces el codigo me devuelve 148k en vez de 640k.

Bueno para no hacerle el cuento mas largo hay le pongo unos de los codigo que he encontrado que me devuelve supuestamente la memoria disponible.

void set_xy(int x, int y)
{
union REGS r;

r.h.ah=2;
r.h.bh=0;
r.h.dh=y-1;
r.h.dl=x-1;
int86(0x10,&r,&r);
}

void _set_xy(char x, char y)
{
asm mov ah,02h // _AH=2
asm mov bh,0h // _BH=0
asm mov dh, y // _DH=y-1
asm dec dh
asm mov dl, x // _DL=x-1
asm dec dl
asm int 10h
}

int get_memory_size(void)
{
union REGS r;

int86(0x12,&r,&r);
return(r.x.ax); // kbyte
}

int _get_memory_size(void)
{
asm int 12h

return(_AX);
}

int put_print(char ch)
{
union REGS r;

r.h.ah=0;
r.h.al=ch;
int86(0x17,&r,&r);
return(r.h.ah); // Status code
}

int _put_print(char ch)
{

_AH=0;
_AL=ch;
asm int 17h;

return(_AH);
}

void main(void)
{
int h,m,s,s100;

set_xy(5,5); printf("dfghjkl\n");
_set_xy(10,10);printf("123456789\n");
printf("Memory size = %dkbyte.\n",get_memory_size());
printf("Memory size = %dkbyte.\n",_get_memory_size());
put_print('A');
_put_print('B');
getch();
}

2
C/C++ / Memoria Disponible
« en: Viernes 18 de Junio de 2004, 15:22 »
Espero que todos esten bien. Tengo una pregunta a ver si me pueden ayudar.
Existe una funcion en C que me diga la cantidad de memoria que hay disponible en el sistema(Windows)? o por lo menos una forma de saber esto. Si alguien tiene una idea por favor me la comunica, muchas gracias.

Páginas: [1]