PREGUNTAS CONTESTADAS - Ensamblador

 Hay un total de 123 Preguntas.<<  >> 

    Pregunta:  10626 - MANEJO DE FLOTANTES EN ENSAMBLADOR
Autor:  Gabino Lozada Ramirez
Necesito saber como puedeo manejar numeros flotantes en ensamblador. De antemano muchas gracias.
  Respuesta:  Luciano
Hola!

Te recomiendo que leas el capítulo 6 de "PC Assembly Language" de Paul A. Carter. El libro lo tenés disponible en internet.

Un abrazo.
  Respuesta:  Victor Pacheco
Hola!

Eso que preguntas no es nada facil, pero nunca imposible, lo unico que tienes que hacer (es lo dificil) es manejar los registros extendidos del microprocesador, pero siempre recordando que como cualquier lenguaje de programacion, existen tipos especificos y deberas declarar en el encabezado del programa que utilizaras el tipo float.

Debes dividir el registro extendido y colocar en la parte alta el entero del numero y en la parte baja la mantisa del numero. Esto es en realidad la tarea dificil, te recomiendo mucho comprarte un libro que se llama LOS MICROPROCESADORES DE INTEL de la editorial PRENTINCE HALL, es muy completo y vienen muchos ejemplos de programacion, creo que hasta viene una calculadora para que la codifiques en ensamblador.

mucha suerte!

    Pregunta:  10826 - SET DE INSTRUCCIONES DE ASSEMBLER PARA PENTIUM II
Autor:  Fabian Herber
Por favor,
les agradecería si alguien me puede facilitar el conjunto de instrucciones (y tutoriales) que se utilizan para programar en un Pentium II. O en todo caso la página de donde pueda consultarlas.

Muchas gracias.

Fabián
  Respuesta:  Jorge Viqueira
Bueno Fabián,

lo más fácil y mejor que podés hacer es consultar el sitio de Intel. Ahí hay una (más bien varias) sección que está dedicada a los desarrolladores de aplicaciones y hay documentación como para llenar un CD.

Espero te sirva, chau...

    Pregunta:  11050 - COMO BRINCAR EL BUFFER
Autor:  gilberto osorio
mi pregunta es como puedo hacer para mandar a imprimir directamente a la impresora sin necesidad de usar el buffer
  Respuesta:  kikonmx
Para ello puedes emplear la interrupción 17h que te permite imprimir caracter por caracter. Si deseas más información envíame un correo y con gusto te mando toda la información necesaria

    Pregunta:  11431 - COMO DESENSAMBLAR UN ARCHIVO CPP (TURBO C++) Y CORRERLO
Autor:  diego alejandro zuluaga aristizabal
yo puedo desensamblar un archivo ejecutable (.exe) generado por el compilador de turbo c++ bajo el debug.
lo que no puedo hacer es correrlo adecuadamente bajo debugg despues de haberlo cargado y desensamblado.

necesito saber como puedo correrlo bajo MASM
  Respuesta:  kikonmx
Si tienes el masm completo, debe venir una utilidad que se llama CV.exe ( Code View ) se llama de la siguiente manera:

CV archivoadepurar.exe

Con él puedes depurar un programa Exe o Com de una manera sencilla, incluso permite puntos de interrupción y ejecución paso a paso

    Pregunta:  11617 - USB EN ENSAMBLADOR..
Autor:  Luis Alberto HernandezSoria y Rodriguez
Que tal¡ , un saludo de antemano , quisiera saber si me pueden ayudar a encontrar las interrupciones en ensamblador para USB , ya que queremos enviar datos por medio de este puerto pero no he encontrado mucha informacion acerca de lo que les planteo ...

Gracias de antemano

Buen Dia
  Respuesta:  Mariano Cerdeiro
Buenas, lo que intentas hacer no es tan sencillo...

El USB es un dipositivo conectado al PCI, por ende necesitas un driver para manejarlo, que yo sepa no existe ninguno para DOS. Por ende no veo la posibilidad de manejarlo por interrupciones. Si podes hacerlo a traves de las apis de windows... Pero tampoco es tan sencillo... Yo hice un programa en visual C, pero en MASM seria muy similar, que llama a las APIS y lee datos de un dispositivo propio que tambien armamos, pero no se si te servira. Informacion tenes MUCHO en

http://www.usb.org

Lo que hice yo, lo arme mas o menos presentable en:

http://www.soix.com.ar/desarrollo/usb/index.html

Cualquier cosa consultame...

Saludos.

    Pregunta:  11920 - COMO PROGRAMAR UN EMULADOR EN ASM
Autor:  atari Jaguar 64
Hola !
Muchas gracias por leer esta pregunta y nas gracias por contestrar.
Vereis "se" programar en C/Pascal/ y algo de ASM, me defiendo basntate bien creo, y me gustaria programar un emulador de algo sencillo, pero aparte de conseguir info sobre la makina a emular, no se q mas hacer ni por donde empezar me gustaria q me ayudaseis muchas gracias.
  Respuesta:  Juan Mellado
Hace ya bastantes años hice un emulador de Spectrum para PC (un 286 por aquella época) escrito completamente en ensamblador, tal vez te ayude un poco mi experiencia al respecto.

Lo primero es conocer "perfectamente" las dos máquinas: la emulada y en la que correrá el emulador. Y esto incluye hardware (micro, registros, interrupciones, excepciones, memoria, puertos, vídeo, ...) y software (sistema operativo). Repito: "perfectamente".

Necesitarás una copia de la ROM de la máquina original, pero ten cuidado con esto ya que suelen estar licenciadas y sujetas a copyright. Lo mejor es que la consideres como un fichero independiente que utiliza el emulador.

Básicamente deberías hacer tres "grandes cosas":

- Reservar memoria. Un bloque con el mismo tamaño de memoria que la máquina emulada y en la que cargues la ROM a partir de la misma posición en la que se encuentra en la máquina emulada.

- Un intérprete del micro a emular. Es decir, una estructura con los registros del micro a emular incluyendo el Program Counter, el Stack Pointer, los Flags, ... y un proceso que recorra la memoria , extraíga los mnemónicos y los ejecute como si fuera el micro original actualizando la estructura de registros y la memoria.

- Y una "máquina virtual" montada sobre el intérprete que detecte los accesos a recursos hardware específicos de la máquina emulada.

Esto último requiere una explicación más detallada. Vamos a ver, clasifica los mnemónicos en varios tipos: los que leen/escriben de memoria, los que leen/escriben de puertos, los que habilitan/deshabilitan interrupciones, etc... Y luego, "simplemente" comprueba a, por ejemplo, qué dirección de memoria intentan acceder. Si intentan escribir en la ROM no les dejes. Si intentan escribir en la memoria de vídeo "emúlala" redireccionando la escritura a la memoria de vídeo de la máquina en la que se ejecuta el emulador. Si intentan acceder a un puerto redirecciona el acceso al correspondiente puerto en la máquina en la que se ejecuta el emulador (si se puede). Y así sucesivamente.

Espero haberte servido de ayuda, ánimo.

Saludos, Juan
  Respuesta:  Juan Mellado
Hace ya bastantes años hice un emulador de Spectrum para PC (un 286 por aquella época) escrito completamente en ensamblador, tal vez te ayude un poco mi experiencia al respecto.

Lo primero es conocer "perfectamente" las dos máquinas: la emulada y en la que correrá el emulador. Y esto incluye hardware (micro, registros, interrupciones, excepciones, memoria, puertos, vídeo, ...) y software (sistema operativo). Repito: "perfectamente".

Necesitarás una copia de la ROM de la máquina original, pero ten cuidado con esto ya que suelen estar licenciadas y sujetas a copyright. Lo mejor es que la consideres como un fichero independiente que utiliza el emulador.

Básicamente deberías hacer "tres grandes cosas":

- Reservar memoria. Un bloque con el mismo tamaño de memoria que la máquina emulada y en la que cargues la ROM a partir de la misma posición en la que se encuentra en la máquina emulada.

- Un intérprete del micro a emular. Es decir, una estructura con los registros del micro a emular incluyendo el Program Counter, el Stack Pointer, los Flags, ... y un proceso que recorra la memoria , extraíga los mnemónicos y los ejecute actualizando la estructura y la memoria.

- Y una "máquina virtual" montada sobre el intérprete que detecte los accesos a recursos hardware específicos de la máquina emulada.

Esto último requiere una explicación más detallada. Vamos a ver, clasifica los mnemónicos en varios tipos: los que leen/escriben de memoria, los que leen/escriben de puertos, los que habilitan/deshabilitan las interrupciones, etc... Y luego, "simplemente" comprueba a, por ejemplo, qué dirección de memoria intentan acceder. Si intentan escribir en la ROM no les dejes. Si intentan escribir en la memoria de vídeo "emúlala" redireccionando la escritura a la memoria de vídeo de la máquina en la que se ejecuta el emulador. Si intentan acceder a un puerto redirecciona el acceso al correspondiente puerto en la máquina en la que se ejecuta el emulador (si se puede). Y así sucesivamente.

Espero haberte servido de ayuda, ánimo.

Saludos, Juan

    Pregunta:  11958 - COMO COFIGURO EL MASM/TASM?
Autor:  M C
Hola, os escribo puesto que aunque tengo el tasm y el masm (v 6.2), no sé cómo lograr hacer que funcionen, cuando trato de compilar un código de asembler para windows, me dice, "comando o nombre de archivo no válido", cómo puedo configurar alguno de estos compiladores, para poder usarlos, o sino, qué puedo usar del Visual Studio para compilar archivos *.asm?. Desde ya, mil gracias.
  Respuesta:  Germain Hernandez Gomez
mira la respuesta que te dieron esta bien , pero ami en lo particular cuando me salia ese tipo de error, fue por que los programas que generaba se guardaban en una carpeta, y en esa carpeta no tenia pegado en masm ni el link, lo que hice fue facil,, puse en masm y el link en esa carpeta y listo, ya no me generaba ese error.
ahora para gener en archivo objeto, lo que hago es lo siguinete

1.- Edito mi programa y lo guardo con el nombre que yo quiera en este caso lo llamare patitofeo.asm ojo debes de poner enttodos los programas la estension .asm, si no te va a marcar ese error

2.- luego si no me marco ningun error de syntaxis, pongo
link patitofeo.obj

3.- ya se genero el patitofeo.exe

nota: festos comandos lo pongo en el ms-dos

y edito el progrma siempre en el edit, del msdos, solo tecleo edit, y listo
  Respuesta:  Carlos Christian Molina Vega
Para compilar un programa en TASM
debes crear el archivo con extension .ASM, ejecutar TASM nombre_archivo.asm y luego TLINK.EXE (link.exe) para generarlo como codigo ejecutable.

Si apenas estas aprendiendo, no te recomiendo usar ASM en Windows, hasta que aprendas bien. Sin embargo, si necesitas trabajar un poco en asm, puedes usar el VC++ o elC++ builder o el Delphi, etc.

Yo una vez consegui en Internet el Visual Asm, pero no recuerdo donde
Cualquier otra duda, mandame un e-mail.

    Pregunta:  12097 - COMO HAGO UN TIPO DE MAQUINA DE ESCRIBIR CON ENSAMBLADOR
Autor:  Alberto Flores Campos
Como hago un tipo de maquina de escribir con ensamblador y el puerto paralelo. que presione una tecla se visualice en pantalla y lo imprima pero que la cabeza de impresion se quede en la siguiente posicion como si fuera una maquina de escribir. Por favor respondanme y si no es mucha molestia envienme un codigo fuente de este, gracias.
  Respuesta:  kikonmx
Para esto puedes utilizar la interrupción 17h, con la que se puede enviar un caracter a la vez, si deseas, puedes enviarme un correo y con gusto te envío la información necesaria

    Pregunta:  12586 - MEMORIA EXPANDIDA
Autor:  Martín H. Bustos
Hola a Todos !!!. Necesito realizar un programa en lenguaje Ensamblador que muestre la cantidad de Memoria Expandida que posee mi equipo. No sé por donde empezar. ¿Cómo hago?. Si alguien puede ayudarme se lo agradecería.
  Respuesta:  Martín H. Bustos
Hola a todos !!!. Hace tiempo que dejé esta pregunta "colgada" pero nadie me la supo contestar. Después de buscar durante un largo tiempo la respuesta les cuento que la he encontrado. Para todas aquellas personas que tengan mi misma duda me voy a "auto-responder" la pregunta.
Antes que nada me detengo en 2 puntos:

1) La memoria expandida(EMMS) se calcula utilizando el servicio 42h de la Int 67h. En el registro BX devuelve la cantidad de páginas libres y en DX la cantidad total de páginas. Cada página tiene un tamaño de 16K(16694 Bytes).
O sea que básicamente las páginas que devuelve la función(En DX) habrá que multiplicarlas por 16K para obtener el tamaño total de la memoria expandida.

2) Antes de ejecutar el programa habrá que verificar si hay algún controlador de memoria expandida(Como por ejemplo el Emm386.exe del DOS) instalado en la PC. Si no hay ninguno, el programa arrojará el valor 0(No hay memoria expandida) o producirá probablemente el "cuelgue" del ordenador.

Ahora vamos al programa:

{Utilizando Turbo Pascal v. 7.0 u otras versiones}
PROGRAM EMMS;
VAR TOTAL,LIBRE:WORD;
BEGIN
TOTAL:=0;
LIBRE:=0;
ASM
MOV AH,42H;
MOV LIBRE,BX;
MOV TOTAL,DX;
INT 67H;
END;
TOTAL:=TOTAL*16964;
LIBRE:=LIBRE*16964;
WRITELN('TOTAL DE "MEMORIA EXPANDIDA": ',TOTAL,' Bytes .');
WRITELN('"MEMORIA EXPANDIDA" LIBRE: ',LIBRE,' Bytes');
WRITELN('PRESIONE <ENTER> PARA SALIR...');
READLN;
END.

Bueno, espero que les sirva la explicación. Hasta la próxima !!!.

    Pregunta:  13006 - CONVERTIR NUMEROS DECIMALES A HEXADECIMALES,OCTALES,BINARIOS
Autor:  Nelson Rivera
Como yo puedo hacer un programa en macro que me cambie los numeros de decimal a hexadecimal, octal y binario?
  Respuesta:  Anonimo
Nelson:

Lo mando en "C" y "Visual Fox Pro", espero y te ayude,
***

* c++
**

VOID itoax(
INT n,
LPTSTR pszBuff)
{
INT i;
INT j;
pszBuff[0] = CHAR_0;
pszBuff[1] = CHAR_X;
for (i = 5; i > 1; i--) {
j = n & 15;
if (j > 9)
pszBuff[i] = (TCHAR)(j + (CHAR_A - 10));
else
pszBuff[i] = (TCHAR)(j + CHAR_0);
n = n >> 4;
}
pszBuff[6] = CHAR_NULL;
}

---------

**
* Fox
*

PROCEDURE itoax
pszBuff=""
do whil n>0
j = BITAND(n, 15)
pszBuff= iif(j>9,chr(j+asc("A")-10), chr(j+asc("0")))+ pszBuff
n = BITRSHIF(n, 4)
enddo
ENDPROC
  Respuesta:  kikonmx
Esto se hace mediante divisiones sucesivas del número a convertir, existe otra forma más sencilla accesando a los bits directamente, si deseas más información, envíame un correo y te explico ( o te envío algún código de ejemplo ) lo que quieras
  Respuesta:  Francisco Noe Garcia Hillyer
enviame un correo donde te pueda mandar el archivo con el codigo fuente y un ejecutable para que veas como convertir, este programa ya lo tengo hecho.

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