• Martes 13 de Mayo de 2025, 23:58

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 - Eternal Idol

Páginas: 1 ... 180 181 [182] 183 184 ... 205
4526
ASM (Ensamblador) / Re: Acceso A Los Puertos
« en: Jueves 24 de Noviembre de 2005, 00:01 »
¿Y un codigo que dice return to dos te parece que es para Windows?

Ese codigo utiliza la instruccion out que te habia mencionado anteriormente.

4527
ASM (Ensamblador) / Re: Acceso A Los Puertos
« en: Miércoles 23 de Noviembre de 2005, 21:21 »
Vamos por partes.

En un Sistema Operativo de 32 bits como Windows no podes acceder al hardware directamente desde modo usuario. Tenes que usar la API de Windows para abrir el puerto que quieras (CreateFile), leer y escribir (Read/WriteFile) y ademas tenes que configurar el puerto correctamente.

Mas informacion:
http://msdn.microsoft.com/library/en-us/de...s_resources.asp
http://www.ontrak.net/mfc.htm

Si no queres usar ningun S.O. dependes de las interrupciones que provee la BIOS o de usar las instrucciones in y out del microprocesador.  

:devil:  :devil:

4528
ASM (Ensamblador) / Re: Acceso A Los Puertos
« en: Miércoles 23 de Noviembre de 2005, 19:10 »
Cita de: "jaumegs"
Hola,
Como podría acceder a los puertos seri y paralelo?

SALUDOS
¿Para que Sistema Operativo?  :whistling:

4529
ASM (Ensamblador) / Re: Kbhit De Tc++
« en: Miércoles 23 de Noviembre de 2005, 08:47 »
Cita de: "isaac_mex"
hola. soy novato en ensamblador. tengo muy poco tiempo programando en este lenguaje.

La pregunta es, si se puede hacer en ensamblador una función similar al KBHIT de TC++, les agradeceria mucho si me dieran el codigo fuente.
Esta es justamente una pregunta para novatos y no para expertos.

Código: Text
  1.  
  2. kbhit:
  3.   mov ah, 1
  4.   int 16h
  5.   jnz hay
  6.   xor ax, ax
  7.   hay:
  8.   ret
  9.  
  10.  

y mas elegante:

Código: Text
  1.  
  2. kbhit:
  3.   mov ah, 1
  4.   int 16h
  5.   jnz @F
  6.   xor ax, ax
  7.   @@:
  8.   ret
  9.  
  10.  

 :devil:  :devil:

4530
ASM (Ensamblador) / Re: A86
« en: Miércoles 23 de Noviembre de 2005, 08:30 »
Cita de: "kamo13"
ok gracias pr las respuestas
 :D
De nadas, despues nos contas como te fue  :smartass:

4531
ASM (Ensamblador) / Re: A86
« en: Martes 22 de Noviembre de 2005, 08:43 »
Cita de: "kamo13"
lo hice correr desde debug y me pasa lo mismo yo tengo windows xp tendra algo que ver??, lo raro es que ya me habia funcionado 1 vez y habia funcionado suepr bien pero ahora me sigue saliendo el mismo mensaje, no se que mas puedo hacer :blink:
Lo primero que podes hacer es aprender como funciona DEBUG que te sera muy util siempre bajo MS-DOS.

Cuando mas o menos lo domines tenes que saber que instrucciones hay en esa direccion, si es que las hay, y como se llego hasta ahi para poder dar con la causa de la excepcion. No creo que sea un error por Windows pero podrias probarlo en un MS-DOS real, de ser un problema de Windows no pasaria nada y de ser un problema del programa se te colgaria o reiniciaria.

 :devil:  :devil:

4532
ASM (Ensamblador) / Re: A86
« en: Lunes 21 de Noviembre de 2005, 21:50 »
Cita de: "kamo13"
hola hice un timer y la primera vez me funciono perfecto despues se corto la luz en mi casa y no me funciono mas solo llega a 00:59:01 y ahi se detiene no se si eso tendra algo que ver pero antes de eso estaba funcionando super bien , no se que puede ser ahora:

el mensaje que me aparece dice asi "la CPU NTVDM ha encontrado una instruccion no permitida. CS:0fa0 IP:e3c7 OP:63 b7 14 00 00 Elija cerrrar para finalizar la aplicacion" y la cierro y el tiemr queda en ese numero y no hace nada, no le hecho ningun cambio al programa no se que puede ser porfa ayudenme
Esta dando una excepcion, ahi ves la direccion, fijate si podes depurarlo con debug.com y que pasa si lo ejecutas desde MS-DOS puro y no desde Windows NT.

4533
ASM (Ensamblador) / Re: Tengo Algunos Problemas Usando Var E Int
« en: Lunes 21 de Noviembre de 2005, 10:09 »
Esto lee UN caracter y lo guarda en el buffer apuntado por DS:DX:

http://www.ctyme.com/intr/rb-2563.htm

 :devil:  :devil:

4535
ASM (Ensamblador) / Re: Mouse Bajo Windows
« en: Sábado 19 de Noviembre de 2005, 10:05 »
En Windows NT tenes una sola interrupcion util y es la 2Eh que se utiliza para pasar al Kernel y ejecutar alguna llamada al sistema.

Por lo general en este S.O. lo que necesitas usar son sus servicios (la API de Windows) y esta viene en una serie de DLLs (Kernel32, Advapi32, User32, NTDLL, etc).

En este caso en particular podes usar ShowCursor (solo para TU ventana).

http://msdn.microsoft.com/library/en-us/wi.../showcursor.asp

 :devil:  :devil:

4536
La taberna del BIT / Re: Razon De Ser
« en: Viernes 18 de Noviembre de 2005, 23:03 »
Aca en España mucho no se gana lamentablemente  :whistling:

4537
ASM (Ensamblador) / Re: Nunca He Programado En Emsamblador
« en: Miércoles 16 de Noviembre de 2005, 19:24 »
¿Para que lo queres? No lo entenderias ...

4538
C/C++ / Re: Problema Con .h Importado
« en: Martes 15 de Noviembre de 2005, 20:58 »
No podes usar el .H sin que lo compile, si nos posteas los errores tal vez te podamos ayudar.

4539
ASM (Ensamblador) / Re: Suma De Dos Numeros
« en: Martes 15 de Noviembre de 2005, 17:13 »
Código: Text
  1.  
  2. mov eax, 55
  3. add eax, 80
  4.  
  5.  

 :devil:  :devil:

4540
La taberna del BIT / Re: ¿Que Tipo De Usuario Eres?
« en: Martes 15 de Noviembre de 2005, 00:47 »
Desarrollador sin lugar a la menor duda. Analista Programador Senior de C/C++ y assembly (x86 & x64)  :devil:  :devil:  :devil:

4541
C/C++ / Re: Forma Elegante...
« en: Lunes 14 de Noviembre de 2005, 19:05 »
Cita de: "patitofeo"
Además siendo un funcion de windos SEGURO que es más lenta.
En este caso en concreto no, incluso es mas lento usar una funcion de la biblioteca standard de C que finalmente termina llamando a HeapAlloc.

 :devil:  :devil:

4542
ASM (Ensamblador) / Re: Como Usar La Bandera De Paridad
« en: Lunes 14 de Noviembre de 2005, 09:47 »
Cita de: "althenna"
con pushfd... no necesita otros parametros o algo por que me sale error con esa operacion o  variable :(
No, proba con pushf. ¿Que ensamblador estas usando?

http://www.online.ee/~andre/i80386/Opcodes/PUSHF-PUSHFD.html

 :devil:

4543
ASM (Ensamblador) / Re: Como Usar La Bandera De Paridad
« en: Domingo 13 de Noviembre de 2005, 21:42 »
Si te referis al indicador de paridad este se encuentra en el registro de indicadores y es exactamente el tercer bit del mismo.

Con pushfd pones el registro de indicadores en la pila, despues lo podes poner en ax con pop y con and sacas todo lo que no sea el bit de paridad, entonces si esta a 0 el bit de paridad no estaba puesto de otra manera (es 4) el bit de paridad estaba puesto:

Código: Text
  1.  
  2.   pushfd
  3.   pop ax
  4.   and ax, 4
  5.   jnz puesto
  6.   nopuesto:
  7. ;hacer
  8.   puesto:
  9. ;hacer
  10.  
  11.  

 :devil:  :devil:

4544
ASM (Ensamblador) / Re: Que Aprender Primero Asm O C,c++
« en: Domingo 13 de Noviembre de 2005, 11:33 »
Yo te recomendaria que C y C++ primero y despues assembly.

En cuanto a ensamblador y codigo maquina son exactamente lo mismo solo que el primero es una representacion grafica del segundo mas amigable para nuestros ojos.

4545
C/C++ / Re: Getsystemtime Getlocaltime En Winapi
« en: Sábado 12 de Noviembre de 2005, 20:55 »
Cita de: "jojojorge"
Hola amigos nesecito mas ayuda sobre estas funciones.
con un pequeño codigo logre mostrar la hora en pantalla, pero nesecito manipular los parametros de la hora como ser horas minutos segundos y milisegundos.
pero dentro de la estructura SYSTEMTIME contiene una variable tipo word y que no tengo idea de como usarla pregunte en la universidad y tampoco tienen idea de como usarla por favor si alguien me podria decir como convertir el valor de la variable word a entero.

salu2 :)

gracias de antemano.
Cada dia compruebo que en las universidad no se aprende a programar ...

En x86, un WORD equivale a dos bytes sin signo por lo tanto en C/C++ es lo mismo que un unsigned short.

BYTE=unsigned char
WORD=unsigned short
DWORD=unsigned int

 :devil:  :devil:

4546
C/C++ / Re: Textcolor()
« en: Sábado 12 de Noviembre de 2005, 19:21 »
Olvidate de esas funciones en un compilador de 32 bits para Windows. Podes intentar usar un compilador viejo, de 16 bits para MS-DOS. Pero no vale la pena realmente usar esas funciones ...

4547
C/C++ / Re: Forma Elegante...
« en: Sábado 12 de Noviembre de 2005, 10:51 »
judamo: gotoxy es una funcion para situar el cursor en la consola, es arcaica, obsoleta y la trajo al mundo la infame Borland.
 
Amilius: ¿Delphi? Estamos mezclando lenguajes entonces ...

bob esponja: esos tipos tienen tiempo libre eh

4548
ASM (Ensamblador) / Re: Ayuda Porfa!
« en: Sábado 12 de Noviembre de 2005, 10:50 »
Cita de: "kamo13"
hola necesito hacer un timer en tiempo real  de hasta 1 hora, con pasos de un minuto donde al finalizar el tiempo programado emita un tono de1 a  2 Khz por 5 segundos, es para un trabajo y la verdad es que programar no es mi fuerte porque me cuesta mucho y no se como hacerlo ojala alguien me pueda ayudar y me diga como hacerlo, gracias

saludos :blink:
¿Para que Sistema Operativo es? Supongo que MS-DOS.
¿Que hiciste hasta ahora?

4549
La taberna del BIT / Re: Pobresitos Ingenieros
« en: Viernes 11 de Noviembre de 2005, 20:24 »
Cita de: "jrsmith"
:kicking:   Con todo respeto mi amigo no se si tomarlo como un alago o como un insulto

 :comp:
¿Que cosa? ¿El ser ingeniero?  :whistling:





PD. Igual que el primer post el mio es una broma  :devil:  :devil:

4550
C/C++ / Re: Forma Elegante...
« en: Viernes 11 de Noviembre de 2005, 19:56 »
Cita de: "Amilius"
a=b?c:d;

P.D.2. Si quieres tener todos tus valores iniciados a 0 si trabajas en windows existe una funcion del sistema operativo, un malloc especial no recuerdo exactamente el nombre pero solo cambia una o dos letras. Reserva un bloque de memoria e inicializa a 0 todo el bloque (que es mas rapido que hacerlo de otras formas). Es muy recomendable hacer este tipo de reserva de memoria por que atenua en gran medida los desastres de un error de administracion de memoria, por que generalmente al intentar escribir usando un puntero no inicializado genera una excepcion por intentar escribir en una zona de memoria no permitida, que viene a ser el 0 con el que inicializamos. Si intentamos acceder a una estructura de datos este acceso sera a otras posiciones pero generalmente suficientemente "chicas" (20,30,150,) para ser salvados por la excepcion de intento de escritura o lectura de una zona de memoria que no podemos utilizar.

El operador ternario es muy bueno realmente, te permite aplicar la misma logica que un if else en una sola linea.

En cuanto a la memoria en el heap, justamente HeapAlloc es la funcion que provee Windows. Poniendo el segundo parametro a HEAP_ZERO_MEMORY conseguis el efecto indicado.
De cualquier manera no tiene mucho sentido lo que decis sobre evitar problemas de excepciones ya que un puntero no inicializado puede apuntar a cualquier lado, a lo que haya en la pila en esa posicion de la variable y no tiene nada que ver con reservar memoria.

Si sirve para cuando usamos funciones de cadenas pero yo les recomiendo la practica habitual:

Código: Text
  1.  
  2. char *str = (char*)malloc(len);
  3. memset(str, 0, len); //yo uso que es una macro en VC++ ZeroMemory(str, len);
  4. free(str);
  5.  
  6.  

Si se acostumbran a escribir los tres como si fueran atomicos dificilmente tengan memory leaks.

Páginas: 1 ... 180 181 [182] 183 184 ... 205