PREGUNTAS CONTESTADAS - Ensamblador

 Hay un total de 123 Preguntas.<<  >> 

    Pregunta:  6126 - INSTRUCCIONES MMX
Autor:  Sign
¡Hola!

- Tengo entendido (creo) que el procesador MMX tiene un juegos de 57 instrucciones para usar en ensamblador, agradecería de alguien que me pudiese indicar donde puedo encontrar un tutorial de los mismos para poder tener todo el juego de instrucciones MMX. Gracias.
  Respuesta:  Corys90 Corys90
en la pagina de la intel busca lo referente al procesador que necesites y baja el juego de instrucciones para cada procesador, lo encuentras en pdf y preparate para imprimirlo, esa vaina es muy grande en cantidad de hojas,,,,como te digo, en la intel encuentras de todo los juego de instrucciones de los procesadores, inclusive lo de tecnologia itanium que son los ultimos.....es interesante....suerte...
  Respuesta:  Hugo Ortega Hernández
Hola...

en http://www.x86.org puedes encontrar las guias para el programador de los microprocesadores de intel... ahi viene la referencia técnica de las instrucciones que quieres... claro, en inglés, pero muy buena documentación (es la oficial de intel)....

saludos....

EOF

    Pregunta:  6837 - ¿COMO SE PASAN PARAMETROS EN ENSAMBLADOR?
Autor:  salvador tojo quintela
Lo que quiero es pasar parametros a un programa, para utilizarlos dentro del programa para la toma de decisiones dentro del programa.
  Respuesta:  Leonardo Almñana
Disculpen si les enoja, pero el pibe de la segunda respuesta se equivoco, dijo que era C y era pascal, y ademas segun yo creo el chico que pregunta se refiere a pasar parametros de la linea de comando so
el c seria

#Includes
...
Definiciones
...
int main(int argc,string argv[]){
...
codigo loco
ASM mov AX,12H ; ejemplo de statement asm
...
return 0;
}

so en ese codigo llamando mediante la directiva ASM le podes pasar variables de c donde le pasarias algun item del Array Argv[] que es el de contenidos de argumentos, y si queres Argc que es la cuenta de cantidad de argumentos, el que quiera mandeme un mail a [email protected] por que estoy armando un grupito de desarrollo para hacer algunas cosas locas en ASM y C++, se escuchan propuestas.
  Respuesta:  Martín H. Bustos
De acuerdo a lo que te entiendo sería de la siguiente manera(Utilizando Turbo Pascal v. 7.0):

PROGRAM NOMBRE_PROGRAMA;
VAR LETRA:WORD;
BEGIN
WRITE(´INGRESE UN CARACTER´);
ASM
MOV AH,00H: {INT. PARA LEER EL CARACT. INGRESADO
INT 16H; {DEVUELVE EL CARACTER EN EL REGISTRO AL
MOV LETRA,AL;
END;
WRITELN(EL CARACTER INGRESADO ES: ´,AL);
READLN;
END.

En síntesis. Debes declarar un variable(En el lenguaje que utilizas) de acuerdo al tamaño del registro(De Ensamblador) que quieres pasar como parametro(En nuestro caso AL, tamaño: Word) y luego haz lo que deseas.
Cualquier duda sólo mándame un mail.Hasta la próxima !!!.
  Respuesta:  .. ...
Por lo que medio te entiendo: realizas un proceso en asm y necesitas sus respuestas.

...aplicando C para la toma de los datos
Bien, si es así, lo he hecho pasando el valor a un registro principal (ax, bx, ...o por lo menos me ha salido con estos dos), luego y en C los tomo como si estuvieran en unas variables con el mismo nombre, pero en mayúscula : _AX, _BX -> con la rayita. Un ejemplo sería algo así:

..
asm mov ax, valor
return _AX

    Pregunta:  6931 - COMO EDITAR UN ARCHIVO DBT
Autor:  Jaime Enriquez
Alguien que pueda ayudarme en como lograr extraer los textos de un archivo .DBT de clipper ya que su archivo de enlace (.DBF) se daño y no puedo leer los textos que me son muy necesarios. He investigado sobre la estructura de estos Archivos .DBT y se que ubicando posiciones se en que parte se encuentran los fin del bloque de texto esto es en la dirección 0Dh 0Ah;

Ojala alguien me puedira ayudar.
  Respuesta:  Pablo Mª Miranda Ros
Hola. No tengo ni idea de ensamblador, pero el problema que comentas yo ya lo sufrí enmi epoca de clipero.

Por lo que has explicado, parece ser que no puedes acceder a los campos memo de una dbf, no?

Yo lo solucionaba de la siguiente manera: Creaba una copia del dbf con otro nombre; hacía lo mismo con el dbt y colaba!!!! EL problema será en la relación entre los dos ficheros. Si los vuelves a copiar, te los pondrá ne otra dirección del disco y problema resuelto. Perderas registros, pero no TODOS los registros.

Suerte y ya me comentarás si te ha funcionado

    Pregunta:  7057 - COMO PASAR PARAMETROS A LAS DLLS
Autor:  pablo saez molina
Casi todos mis programas los hago en Visual Basic 6.0
Pero cuando necesito mas velocidad me gustaria usar dlls en
Assembler, que tambien conozco un poco.
He logrado hacer algunas dlls con MASM32, pero no encuentro la manera de pasar los parametros desde Visual Basic,mejor dicho,como hacer que la dll reciba esos parametros y trabaje con ellos.
Gracias de antemano.
  Respuesta:  Manuel
***** En VB ***
Private Declare Function NombreFuncion Lib "C:\Ruta\NombreDll.dll" _
(ByVal Parametro1 As Long, ByVal Parametro2 As Long) As Long

*******En la DLL.asm*******
.486
.model flat,stdcall
.stack 8000h ; Opciopnal
option casemap:none ; Opcional

; Archivos que necesites incluir:
include c:\masm32\include\kernel32.inc
includelib c:\masm32\lib\kernel32.inc

.const
; Constantes si las necesitas
.Data
; Datos inicializados que necesites
Data?
; Datos sin inicializar que necesites

.Code

DllEntrada proc hInstancia, Razon, Reservado
mov eax,1
ret
DllEntrada endp

NombreFuncion proc Param1,Param2
mov eax,Param1
mov edx,Param2
; ....
; ....
mov eax, Valor que quieres retornar
ret
NombreFuncion endp
end DllEntrada
******************
*** En Dll.def ***
LIBRARY NombreDll
EXPORTS
NombreFuncion
*******************

Si quieres pasarle un String haz lo siguiente:

En VB:
Private Declare Function NombreFuncion Lib "C:\Ruta\NombreDll.dll" _
(ByVal lpStrA As Any, ByVal lpStrB As Any) As Long

Dim VarStr1 As Strin *8192
Dim VarStr2 As Strin *8192

' tienes que especificar el tamaño. como ejemplo
te he puesto 8192

La llamada seria:

N = NombreFuncion(VarStr1,VarStr2)
N recogera el valor del registro EAX cuando salga de la funcion ASM.

La recogida en ASM asi de facil

NombreFuncion proc uses edi esi Param1,Param2
mov esi,Param1
mov edi,Param2
mov ecx,8192
shr ecx,2 ; DWORDs
cld
rep movsd
; ....Esto copiaria String 1 en String 2
; ....
mov eax, 0
ret
NombreFuncion endp

Por supuesto que los parametros no tienen por que
ser del mismo tipo, puedes incluso pasar la direccion de un Array...

Espero te sirva...
Saludos.
  Respuesta:  Paul Guerra
Al pasar parámetros a una función, también hay que tener en cuenta que VB utiliza la convensión de llamadas STDCALL. Al utilizar esta convensión de llamada, se deben sacar de la pila todos los parámetros pasados a la función. De lo contrario, VB podría generar un error.
  Respuesta:  Alejandro
Hola

Al llamar a la función de la DLL se pasan los parámetros a la pila y por último la dirección de retorno.
En tu DLL en ASM puedes recoger los parámetros directamente de la pila, (por ejemplo mov eax,[esp+8]) sabiendo siempre que en la primera DWORD a la que apunta la pila está la dirección de retorno.
Espero que esto te sirva de ayuda

Saludos

    Pregunta:  7187 - COMO GUARDAR LOS DATOS AL SALIR DEL PROGRAMA
Autor:  juan navarro
En masm32, con un EDITTEXT cambio los datos que necesito, pero como puedo guardar los cambios en el fichero al cerrarlo, me gustaria saber que función debo usar o algun tutorial, he intentado con CreateFile pero me parece que me devuelve error porque el fichero está en uso.
  Respuesta:  Victor Pacheco
hola!
Esa falla es comun si al momento de editar el archivo y quererlo guardar, esta en uso. Te recomiendo que antes de editar el archivo, veridiques que no este siendo utilizado por ninguna aplicacion, (incluso por el mismo MASM) y para que tengas un mejor rendimiento logico, te aconsejo que todos tus archivos los hagas y edites en el editor de MSDOS, guardandolos con la extension ASM. Te sera de gran utilidad este metodo de programacion.

Saludos!
Victor Pacheco

    Pregunta:  7309 - FUNCIONAMIENTO DE MEMORIA PENTIUM
Autor:  RAUL AYALA OVANDO
Quisiera saber el funcionamiento de lña memoria pentium.Es para una materia de lenguaje ensamblador,por otra parte esta pagina esta de maravilla y muy completa.
  Respuesta:  Jorge Luis Peralta
Te recomiendo que trabajes en modo protegido.
Aparenteme es dificil, pero en modo protegido es mas facil.
La ventaja es que te olvidas de los segmentos, o sea si tienes datos mayores a 64Kbytes no hay problema porque puedes manejar en un solo segmento hasta con datos hasta 4 Gbytes.
Para la manipulacion de datos en memoria tienes que tener en cuenta que debes trabajar con registros de 32 bits ESI, EDI y EBX en lugar de SI, DI, BX.
La asignacion de Segmentos, descriptores de eso se encarga el sistema operativo, por lo que te recomiendo no los toques.
  Respuesta:  numen numen
El funcionamiento de la memoria en el Pentium es idéntico al del i386 y todos los microprocesadores tipo intel de 32 bits. Esencialmente existen para estos micros tres modos de operación:

1) Modo real: La memoria consiste en 1Mb en total, y se direcciona mediante el mecanismo de segmento:offset. Esencialmente, el bus de memoria es de 20bits (1Mega), asi que se usan dos registros de 16bits (seg/off). El segmento se multiplica por 16 y se suma al offset. Con eso se obtienen 20 bits. Usualmente el segmento se deja fijo y se varía el offset, de forma que sólo se direccionan cómodamente 16bits (64Kb) de los 20. Este es el método primitivo de los primeros micros de Intel (8086-80186).

2) Modo protegido: Si el modo real te parece complicado, el modo protegido es peor. Hace falta un pequeño libro para describirlo, así que te sugiero que te leas los manuales de intel (www.intel.com). Esencialmente, se emplea un bus de memoria de 32bits (4Gb direccionables) con la posibilidad de paginar memoria en el disco duro. Se establecen mecanismos para proteger la memoria, de forma que no puedes acceder (en general) a toda la memoria a menos que tengas privilegios para ello. Ahora los offset son de 32bits, en tanto que los segmentos indican una entrada en una base de datos (GDT) donde se describen los límites, permisos, etc. que se conceden a ese segmento para acceder a la memoria. Este mecanismo es necesario para hacer sistemas operativos multiusuario y multitarea, pues la memoria no puede ser usada promiscuamente.

3) Modo v86 (virtual-86): Consiste en una simulación del modo real dentro del modo protegido. Es el que emplean algunos extendedores de DOS (como DPMI) para dar más de un mega de memoria baja MSDOS.

Espero no haberte asustado. Lo mejor que puedes hacer es irte a Intel.com y bajarte la descripción del i386 a nivel de hardware, donde te explicarán los arcanos de su mecanismo de direccionamiento. Realmente vale la pena si quieres programar tu ordenador a bajo nivel. Aunque de lo dicho arriba tampoco hace falta mucho. En general el sistema operativo de 32 bits que uses se encargará de administrar los segmentos, de forma que no tendrás que preocuparte de nada.

    Pregunta:  7955 - RESIDENCIA EN MEMORIA
Autor:  Christopher Calderón Ramos
Buenas ante todos, Quisiera saber las pautas para hacer un programa que quede residente en memoria en Assembler aunque quiero intentarlo solo consigo que se aloje en memoria con la Int 27h sin que haga nada más si me pueden ayudar se los agradesco mucho
Gracias.. por todo......!!!!
  Respuesta:  Rafael Alb Lopez Alpizar
Tengo algunos ejemplillos que talvez te ayuden! Si aun necesitas ayuda avisame

    Pregunta:  8074 - RUTINA JOYSTICK
Autor:  ElMagelan
Alguien me puede proporcionar un codigo que controle si se ha pulsado el boton \"A\" o el \"B\" del Joystick?

Mi problema es que tengo una aplicacion en VisualBasic que lee las pulsaciones del boton del Joystick y las añade a un contador. Dicha aplicacion funciona constantemente.
Si un usuario pulsa 10 veces el boton A del joystick se suma 10 al contador. Pero si el windows esta cargando una aplicacion IExplorer, Word etc igual solo sube la mitad de las pulsaciones al contador debido a que mi aplicacion se para durante unos instantes.

Me han dicho que si se hace una rutina en Esamblador no se perderia las pulsaciones.

Estaria muy agradecido si me pudiese ayudar alguien porque no tengo ni idea de Esamblador. Claro que las pulsaciones se deberian guardar en un sitio donde mi Apli las recogeria.
  Respuesta:  cesar gerez
Lo que puedo ofrecerte es la forma de detectar una señal binaria por un puerto paralelo para que active un evento. En otras palabras, un pulsador o varios que al ser presionados pueden hacer que funcione un contador por pantalla o electronico o haga algo como encender un motor, todo ello en multitarea sin importarle si estas usando la pc para navegar o en aplicaciones que consuman memoria como el mp3.
Si te interesa, decime especificamente que queres que haga y si la pantalla de mando (interfaz) la queres en Visual Basic o en ventana de DOS.
Si sabes programar te doy las sentencias de manejo de puertos en lenguaje que mas entiendas, si no te recomiendo usar una DLL que cree en C++ y las sentencias para aplicarla bajo VISUAL BASIC 6.0.
Tambien diseño Hardware de aplicación.
Todo lo que sea consulta o datos sueltos te lo doy gratis, si queres un proyecto a medida completo con circuito eléctronico, te lo cobro.
Si me interesa tu idea...lo hablamos.
bye

    Pregunta:  8565 - LECTURA DESDE TECLADO
Autor:  Eagleheart
Hola, necesito informacion sobre como leer cadena ASCII desde teclado y almacenar en posiciones de memoria consecutivas y como hacer para que se permita eliminar caracteres introducidos. Muchas gracias.
  Respuesta:  Martín H. Bustos
Hola. Recién termino de programar el código fuente del programa que estabas necesitando. Espero haberte entendido bien.
Cualquier duda escribime. Chau...

Visualizar Código.
  Respuesta:  J RC
Hola:

Lo mejor para leer cadenas desde el teclado es utilizar las interrupciones de la ROM BIOS del PC. Puedes consultar cualquier libro de ensamblador sobre PC que te las traerá seguro. En cuanto a almacenarlas, puedes tener un puntero e ir incrementándolo en tantos bytes como tamaño tiene la cadena leída, almacenando las cadenas en posiciones contiguas, aunque es importante no perder la dirección base de la primera cadena, para recorrer luego las direcciones e irlas recuperando.

    Pregunta:  9014 - COMUNICACIóN MEDIANTE RED
Autor:  Francisco Riccio
Como realizo una comunicación entre maquinas que estan conectadas en red y se transmiten mensajes.
  Respuesta:  Jose Luis Fernandez Fernandez
debes tener activado el programa mesajes emergentes en todas las PC´s y lo activas asi:inicio/ejecutar y en la casilla abrir escribes winpopup y le das aceptar una vez abierto te vas donde dice enviar y pones el nombre de la PC que tiene en la red, escribes el mensaje y le das aceptar y de inmediato lo recibe la PC que le pusiste el nombre.

ojala y le hayas entendido alguna duda escribeme bye

|<  <<  1 2 3 4 5 6 7 8 9 10 11  >>  >|