PREGUNTAS CONTESTADAS - Ensamblador

 Hay un total de 123 Preguntas.<<  >> 

    Pregunta:  53590 - WINDOWS XP Y ENSAMBLADOR
Autor:  Oscar Urdaneta
Mi problema es el siguiente, tengo una rutina en ensamblador que al finalizar llama a la INT 19h para arrancar la maquina desde la unidad de disquete, cambiamos el MS-DOS 6.22 a Windows XP y la aplicacion ya no funciona, es mas, hay muchas otras cosas que no hace, por ejemplo la actualizacion de la fecha y hora, que sucede?

Sera que windows mueve los vectores de interrupcion a otro lado?

Si hay alguna forma de solucionarlo les agradeceria la ayuda, de otro modo me va a tocar regresarme a MS-DOS 6.22
  Respuesta:  gabriel Amezquita
En Efecto XP desactiva las funciones de la BIOS.
No puedes reiniciar la maquina usandop la INT 19, Windows no te lo permite,
tampoco cambiar la fecha, Ni puedes acceder directamente al disco,
esto se debe a que XP activa el modo protegido, ahora es el sistema operativo quien administra el hardware, si quieres usarlo, tienes que pedir permiso al XP, un asunto demasiado complicado, Mejor Sigue usando MS-DOS

    Pregunta:  54905 - MULTIPLICAR UN REGISTRO DE 32 BITS POR UNO DE 16
Autor:  raquel hernandez
hola!!pos lo que pone el titulo.soy nueva en ensamblador y odavia no controlo mucho,pero se que debo hacer este programa sin hacer uso de los registros eax(32 BITS) tengo que arreglamerlas con los de 16.pero por mas k lo intento no veo la luz.podeis echarme una mano??
gracias!!
  Respuesta:  pablo jorquera tapia
Prueba con compiladores como el AS o el GAS (GNU Assembler) para x86, o el NASM. O si no, con una version no muy vieja de TASM para DOS o Win32.
  Respuesta:  pablo jorquera tapia
No no, espera, ¿ dije "usar un compilador de 32 bits"? lo que queria decir es que uses instrucciones como MUL o IMUL. no creo que puedas hacer una instruccion como MUL EAX, EBX, pretendendo ser EAX * EBX. Tiene que ser la instruccion destino sola (MUL EAX). Ahora si, como mencione puede ser culpa de un compilador antiguo como los diseñados para DOS de 16 bits, tendrias que buscar uno mas nuevo que pueda usar registros de 32 bits del 386.

    Pregunta:  55899 - COMO CE MANDA A PANTALLA LA HORA DEL SISTEMA EN ENSAMBLADOR
Autor:  cristian sanchez mendoza
de que para leer la hora de utiliza la instruccion

mov ah,2ch
y esta la guarda el ch= hora
en cl= minutos

pero como extraigo esa informacion para mandarla a pantalla
  Respuesta:  yerko chapanoff
Hola, lo que tienes que hacer es utilizar la interrupcion 21/02 para imprimir un caracter a pantalla, en rigor lo que hace esta instrucción es escribir el caracter de la tabla ascii equivalente al valor hexa que tengas cargado en el registro. Ahora el detalle es que la instrucción que indicas para rescatar la hora, entrega la hora y minutos pero en Hexa, por lo tanto, para poder utilizar la instrucción 21/02 hay que pasar cada dígito al valor hexa que corresponda al caracter visual que queremos imprimir. Para esto, lo primero es tomar la hora, que es un dato de 2 digitos y separarlo en 2 digitos, para luego transformar cada uno al valor hexa que corresponda al número. Para separar el número en 2 dígitos, lo divides por 10 (A en Hexa) y con eso en el cuociente te quedarán la decena y en el resto te quedarán las unidades. Ahora ya tienes separado el número en 2 dígitos, pero aún siguen siendo hexas, ahora lo que se hace para poder imprimir por pantalla el equivalente ascii, se le debe sumar 30H a cada dígito, o sea, suponiendo que tienes cargado el 5H en DL, haces ADD DL, 30H (quedará DL=35h) y luego MOV AH, 02H y luego INT 21, lo cual imprimirá el caracter equivalente al 35H en la tabla ascii que si revisas verás que es justamente el caracter "5". De la misma forma lo haces para los otros dígitos.

Espero te sirva.
saludos!
Yerko Chapanoff

    Pregunta:  55952 - SEPARAR CARACTERES DE UNA CADENA EN MEMORIA
Autor:  hipolito lovera
Hola como estan, espero que con tranquilidad.
Bueno les pido una ayuda de buen amigo.

por una parte.
mi pregunta es lo siguiente:
una vez introducida una cadena por teclado, quiero sacar por puerto paralelo los caracteres de una cadena que reside en memoria, es decir, sacarlo letra por letra ademas debe mostrarse n veces la misma secuencia de las letras.

por otra.
El otro problema que tengo es:
Como mantiener activo, o sea en 1, un pin del puerto paralelo mientras una tecla determinada se mantiene presionada y justo cuando se deja de presionar, el pin mencionado tambien se desactiva.

Todo esto quiero realizar con el ensamblador ASM

gracias de antemano, espero esta pagina nos ayude a los que de verdad lo necesitan.
  Respuesta:  xabi GA
Hola

En algo te puedo ayudar,

sobre la segunda pregunta, yo utilizaria algun timer que me leyera la tecla cada cierto tiempo y que comparar el resultado anterir y actual de la tecla pulsada, si son iguales mantengo el led encendido y si son diferentes lo apago, con unos 20 ms creo que bastaria, esto se utiliza para evitar rebotes en los pulsadores ()almenos yo lo hago asi).

sobre la cadena, bastaria con crear un cadena de caracteres y un punerto que recorra esa cadena, identifique el caracter y lo envie por el puerto paralelo.

saludos y espero haberte servido de ayuda

pd: yo me cambiaria a lenguaje C, es mas facil de programar

    Pregunta:  58304 - COMO VISUALIZAR LOS RESULTADOS EN MASM
Autor:  Frey Rey
He ejecutado archivos en el masm y los linked pero cuando ejecuto el .exe solo muestra una pantalla rapidamente y no puedo ver resultados, como puedo hacer para mejorar este problema o hay algun comando para fijar la pantalla como se hace en pascal o c, gracias.
  Respuesta:  David Martinez
es porque necesitas colocar una pausa, esto lo logras agregando
xor ah,ah
int 16h
antes de finalizar el programa, y listo, se te ejecuta, muestra tu resultado y luego de presionar una tecla al final de todo continua y se cierra

    Pregunta:  58345 - HORA DEL SISTEMA
Autor:  diana miranda
hola me pueden ayudar por favor...necesito imrpimir en la pantalla la hora del sistema conla funcion 2Ch de lainterrupcion 21h el porblema es que al momento de imrpimir me salen caracteres ascii y nolos numeros que deberian salir... como cambio ese codigo para que salga eñ numero especifico y no el simbolo.por fa ayudenme de urgencia
  Respuesta:  yerko chapanoff
Diana,
lo que pasa es que la instrucción para imprimir, lo que hace es imprimir el caracter ascii correspondiente al hexa que esté cargado en DL. Ahora supongamos que son las 5, rescatas la hora y se la asignas a DL y la imprimes directo: te aparecerá un caracter extraño, ya que ese caracter extraño es el equivalente en la tabla ascii al 5 en hexa.
Para corregir esto, hay un simple truco que consiste en sumarle 30h al valor hexa original, con lo cua se obtiene el valor hexa correspondiente al caracter deseado, en este caso "5". Suponiendo que tienes cargado el 5H en DL, haces ADD DL, 30H (quedará DL=35h) y luego MOV AH, 02H y luego INT 21, lo cual imprimirá el caracter equivalente al 35H en la tabla ascii que si revisas verás que es justamente el caracter "5".

Ahora este truco funciona sólo para un dígito, por lo que si tienes un número que tenga dos dígitos como la hora, lo que tienes que hacer primero es separar este número en 2 dígitos y luego aplicar el truco anterior para cada uno. Como los separamos? muy sencillo, tomas el número de 2 dígitos y lo divides por 10 (A en hexa), tras lo cual te quedará en el cuociente la decena (0 a 9) y en el resto las unidades (0 a 9). Ahora para la decena aplicas el truco anterior y lo imprimes, lo mismo para las unidades y ya tendrás la hora impresa por pantalla.

saludos,
Yerko Chapanoff

    Pregunta:  60004 - PASAR DE C A HEX
Autor:  Luis Miguel Lopez Hidalgo
Necesito pasar un archivo en C (txt) a HEX para poder grabar un PIC 16F876. He visto algunos pero el problema es que vienen en ingles y yo no lo domino.
Me podriais ayudar?
Atte. Luis Miguel de Málaga
  Respuesta:  Helmuth Quiroa
hola, puedes usar el compilador MikroC de Mikroelectronica, ala hora de depurarlo el compilador te lo convierte a .hex

    Pregunta:  61038 - CARGAR CONTENIDO DIRECCION DE MEMORIA
Autor:  Roberto Palomares
Buenos días:

A ver si alguien me puede ayudar. Con que instrucción se puede leer el contenido de un dirección de memoria??

la $s0,BUFFER (me lee la direccion de memoria pero no lo que hay dentro de la memoria)

lw $s0,BUFFER que en un principio que creía que era la opcion correcta no me funciona.
  Respuesta:  Gabriel Amd
debes poner la direccion de memoria en corchetes

mov eax,[buffer]

recuerda que existen muchos modos de direccionamineto, directo, indirecto, indexado, etc

    Pregunta:  61405 - ENVIAR Y RECIBIR DATOS POR EL PUERTO USB
Autor:  heidy villa
hola
tengo la siguiente pregunta acerca de como se pueden enviar y recibir datos a traves del puerto usb trabajando con el lenguaje ensamblador para prender unos leds de una protoboard el que me pueda ayudar con las direcciones o con algo relacionado muchisimas gracias
  Respuesta:  gabriel amd
porque no utilazas mejor el puerto paralelo, es mas facil y divertido.

Para usar USB desde MS-DOS necesitas programarlo desde cero, una ardua tarea muy laboriosa.
en windows leer muchos APIs, igual de fustrante.

    Pregunta:  63814 - MARQUESINAS EN LENGUAJE ENSAMBLADOR
Autor:  juan fernandez
necesito hacer una marquesina en leguaje ensamblador?
la idea es de pintar en la pantalla el ultimo caracter de mi lista y ir poniendo ese caracter en una posicion adelante y borrar atras y escribir atras el otro caracter que tengo en la ultima posicion -1
necesito ayuda
  Respuesta:  Enrique Palomares H
Hola Juan Fernández Ami también me dejaron el mismo proyecto de la marquesina en ensamblador y quisiera preguntarte si pudiste hacerlo y si me pudieras ayudar a conseguir el programa para hacer mi proyecto espero y me puedas ayudar Bro puedes contestarme a este correo

|<  <<  3 4 5 6 7 8 9 10 11 12 13  >>  >|