• Lunes 6 de Mayo de 2024, 10:23

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.


Mensajes - Astor

Páginas: 1 ... 3 4 [5]
101
C/C++ / Re: Memoria-?
« en: Jueves 13 de Febrero de 2003, 22:04 »
Con que modelo de segmentacion estas compilando el programa ? Probaste con huge ?

Si no, no va a quedarte otra que hacerlo en modo protegido, ya que en modo real como maximo dispones de 640K.

102
C/C++ / Re: FILAS Y COLUMNAS EN C
« en: Jueves 13 de Febrero de 2003, 22:02 »
No entiendo del todo aun, si bien comprendo el significado de la fila de un ejecutable no logro hacerlo con el de columna (???).
Podrias por ejemplo entre cada linea incrementar una variable, mejor dicho un puntero que guardas en cierta zona de memoria (por lo que si se incrementa desde la primera linea, va a contener el numero de linea que se esta ejecutando).
El otro programa deberia acceder a la zona de memoria donde lo guardaste y de ahi leer por que linea va.

Podrias usar un grupo de bytes del vector de interrupcion que no esten utilizados (esto siempre y cuando trabajes en modo real).

103
C/C++ / Re: FILAS Y COLUMNAS EN C
« en: Jueves 13 de Febrero de 2003, 04:21 »
Podrias explicarte nuevamente ya que, sinceramente, no logro comprender tu necesidad.

104
C/C++ / Re: Libreria time.h en Lenguaje C
« en: Jueves 13 de Febrero de 2003, 04:18 »
Mira puede que un programa que suma numeros tarde bastante menos de unos segundos con lo que con esas funciones de bios quedas imposibilitado. Deberias recurrir a utilizar el 8254 con el cual podes contar de micro segundos.

105
ASM (Ensamblador) / Programa
« en: Sábado 8 de Febrero de 2003, 21:26 »
Tasm programa.asm
Tlink programa.obj

En vez de tasm y tlink usa los nombres del compilador/linker que tengas.

106
ASM (Ensamblador) / Calcular el tiempo en milisegundos
« en: Sábado 8 de Febrero de 2003, 20:59 »
Se ejecuta 18.2 veces por segundo porque la cuenta cargada en el Timer0 del 8254 (colgado de la IRQ 0 del 8259) esta cargado con 0xFFFF . Si bajas ese numero conseguis bajar la base del timer.

107
ASM (Ensamblador) / suma de dos numeros
« en: Sábado 8 de Febrero de 2003, 20:54 »
Si tenes razon, explique todo al reves. Deben ser los efectos del alcohol, menos mal estabas para rectificarme.

Gracias y saludos.

108
C/C++ / Ingresar un entero de largo 8 en C
« en: Miércoles 5 de Febrero de 2003, 18:17 »
Con un unsigned long te alcanza. Si la longitud de estos es de 4 bytes podrias llegar a representar hasta 4 GB.
El maximo numero de 8 digitos es
99.999.999 con lo que con el long quedas perfectamente cubierto.

109
C/C++ / Ayuda, ¿Como explorar los discos en C?
« en: Miércoles 5 de Febrero de 2003, 18:14 »
Mira si necesitas ver las particiones si o si vas a tener que ir al BIOS como minimo, pero te vas a llevar un lindo chasco cuando tengas que aprender el manejo del bootsector y las tablas de particion. Si no sabes mucho eso lo dejaria.

Para explorar otros dispositivos recurriria al sistema operativo ya que si saltas directo al bios vas a tener que estudiarte el filesystem de cada dispositivo y leerlo a pedal.
Por ejemplo si usas DOS recurri a las subfunciones de la int 21h o si bien lo estas haciendo bajo linux lo hagas con sus llamadas al sistema definidas en unistd.h y fstat.h

110
ASM (Ensamblador) / Re: Calcular el tiempo en milisegundos
« en: Miércoles 5 de Febrero de 2003, 18:08 »
Yo en tu lugar utilizaria haria una ISR (rutina de atencion de interrupcion) y la colgaria de la INT 8 (IRQ 0) la cual interrumpe cada 55 ms. Como probablemente esa base sea muy grande para vos deberias reconfigurar el 8254 (en modo 3) y cargar el contador con una base menor (la base mas pequeña en este counter son 839 us).

Es la mejor solucion que hay, eso solo si estas haciendolo sobre DOS o algun OS en modo real.

111
ASM (Ensamblador) / Re: suma de dos numeros
« en: Miércoles 5 de Febrero de 2003, 18:05 »
No alcanza con sumarle o restarle 48 para pasar de Hexa a Decimal o viceversa. Eso solo sirve para un solo digito. Si alguien ingresara el string "432"

Deberias comenzar a hacer divisiones sucesivas, por ejemplo por 100(luego de obviamente haber restado 48d a cada digito caracter). El resultado va a ser 4 y el resto 32.
A ese 4 lo multiplicas por 100 y lo pones en un registro. EL resto (32) lo divis por 10 ahora, y al resultado, 3, lo multiplicas por 10 y se lo sumas al registro que contenia el 400. Asi seguis hasta que dividis y multiplicas por 1.

Si vas  a trabajar con numeros de 16 bits por ejemplo deberias comenzar a hacer las divisiones sucesivas arrancando por 10.000

Al terminar vas a haber hecho algo similar a la funcion Atoi de C.

112
ASM (Ensamblador) / como ensamblar un programa
« en: Miércoles 5 de Febrero de 2003, 18:00 »
Podes conseguir por la web el TASM (Turbo Assembler) o si no el MASM de Microsoft gratis (las ultimas versiones)

Gralmente si el programa corre en modo real basta con escribir tasm (o masm) nombre.asm

y luego linkearlo con tlink (o link en masm) y listo.

Si aclaras la plataforma sobre la que estas, seria mejor aun.

Páginas: 1 ... 3 4 [5]