Hay un total de 123 Preguntas. | << >> |
Pregunta: | 24815 - NUMEROS NEGATIVOS EN ENSAMBLADOR |
Autor: | Raul Rocha |
estoy eleborando un programa en lenguaje ensamblador sobre las operacione aritmeticas basica con numeros enteros pero no he podido hacerlo funcionar con numeros negativos. soy un principiante en este lenguaje gracias por su ayuda |
Respuesta: | Manuel Redondo |
Para utilizar números negativos en binario, se tienen que complementar a 2. Es decir, reservar un bit para el signo. De hecho, todo esto lo hace el compilador y tú no te tienes que preocupar de nada. Pero, si quieres programar a más bajo nivel, necesariamente tienes que complementar a 2 (hay procesadores que tienen instrucciones específicas). |
Respuesta: | Paul Guerra |
Para utilizar números enteros negativos se procede como si fuese cualquier otro número:
mov eax, -5 mov dword ptr [ebx], -50 ... Hay que tener en cuenta que los números negativos no se diferencian de los números positivos. Por lo que el código del programa es el que define cómo hay que tratarlos. Para aclarar las cosas: mov eax, -5 mov ebx, 2 cmp eax,ebx ja salto ;El salto se produce, aunque nosotros no queremos que salte ... salto: ... Lo correcto sería: mov eax, -5 mov ebx, 2 cmp eax,ebx jg salto ;El salto no se produce ... salto: ... La instrucción JA (Jump if Above) no diferencia entre positivos y negativos, aunque JG (Jump if Greater) sí lo hace. |
Pregunta: | 24891 - ERROR DE PILA AL LINKAR UN CODIGO .ASM |
Autor: | Jose Robles |
Cuando enlazo un .obj que supuestamente lleva un pila (stack), tlink me da la siguiente alerta: "Warning: No stack". Me gustaria saber por qué da esa alerta y como rectificarla, pues me es necesaria para la implementación de procedimientos. Nota: el fuente .asm que uso para la pila sigue la siguiente estructura:
pila segment stack db 256 dup ('?') pila ends ... code segment assume ..., ss:pila Gracias. |
Respuesta: | nn nn |
primero figate si el programa lo escribiste .com en el caso que fuese .com debiera tener despues de declarar el pto. code o codigo segment una sigla org 100h que es un desplazamiento
si eso esta escrito los comsndos del link es el suiguiente tlink /t [ nombre] y no tlink [nombre] |
Respuesta: | nn nn |
primero figate si el programa lo escribiste .com en el caso que fuese .com debiera tener despues de declarar el pto. code o codigo segment una sigla org 100h que es un desplazamiento
si eso esta escrito los comsndos del link es el suiguiente tlink /t [ nombre] y no tlink [nombre] |
Pregunta: | 25090 - MANEJAR LA SALIDA DEL PROGRAMA A UN DISPLAY CONECTADO A LPT1 |
Autor: | Diónysos Durán |
Necesito realizar un programa que acepte un caracter de teclado, lo compare con una tabla y despliegue otro caracter distinto en un display a 7 segmentos conectado a través del puerto paralelo de la PC o puerto de la impresora.
Que al inicio despliegue unmensaje que diga: "Introduce caracter" y que si el caracter introducido es "0" (Cero) el display desplegará un "A". Si es un 1, el display desplegará un "B", y así sucesivamente hasta el "9" que mostrará un "J". Necesito que me ayuden a resolver este problema. Sobre todo necesito que me pudieran decir cómo conecto el display a un cable para el puerto de la impresora. Me urge mucho... Se los agradezco de antemano... |
Respuesta: | Ergue Vittoriano |
Que tal amigo!, leí tu pregunta y creo que puedo ayudarte un poco, lo que quieres hacer segun entendi, es mas o menos sencillo, el programa es lo de menos lo puedes hacer en cualquier lenguaje, y que el programita se encargue de hacer la conversion, lo primero que tienes que hacer es un circuito para conectar el display, como el display tiene 7 segmentos mas el punto que son 8, y por el puerto paralelo tienes 8 bits casualmente, puedes manejar cada segmento con cada bit del puerto de datos, recuerda que el circuito tiene que acoplarse con el protocolo de transmision de la computadora para puerto paralelo, es decir, que tu circuito sepa cuando le esta llegando la informacion, la parte del circuito no es tan facil como crees, tienes que poner un lacht o un buffer para retener el dato que viene del puerto y que el programa se encargue de enviar un caracter que pueda activar los bits correspondientes en display para que se formen las letras...
bueno es todo lo que te puedo decir, te recomiendo que busques ayuda, si no sabes de electronica digital, con un ingeniero o un tecnico de electronica o computacion, porque para armar el circuito debes tener algo de experiencia en la materia... Bye! |
Pregunta: | 25117 - PROGRAMAR EN ENSAMBLADOR PUEDE DAÑAR A LA MEMORIA? |
Autor: | Alexis Leung |
ES VERDAD QUE CUANDO ESTOY PROGRAMANDO EN ENSAMBLADOR, SI ME DESCUIDO PUEDO DAÑAR LA MEMORIA PERMANENTEMENTE?. |
Respuesta: | Gabriel Amezquita |
no, no puedes dañar la memoria, hagas lo que hagas,
lo peor que puedes hacer es borrar de la RAM datos , aunque jueges con el controlador de memoria dinamica no lo dañaras, no te preocpues |
Respuesta: | Martin Candurra |
No, eso es totalmente falso.
Podes perder datos, pero nunca dañar la memoria. |
Respuesta: | Juan Mellado |
No, no es verdad, no puedes dañar la memoria.
Aunque me gustaría aclarar que: 1.- Si estás programando en ensamblador (o cualquier otro lenguaje) para un ordenador de lo más normal y corriente: ES IMPOSIBLE. 2.- Si el ordenador (o dispositivo) para el que estás programando está mal diseñado, pero bastante mal diseñado, podrías llegar a dañar la memoria o cualquier otro componente. El problema no sería el software, sino el hardware. Por ejemplo, escribir en un determinado puerto de E/S podría estropear un chip haciéndole llegar una tensión más elevada de la soportada. Recuerdo un caso de un ordenador comercial, pero no deja de ser una mera anécdota. REPITO: No hay que preocuparse, sólo disfrutar programando. Espero haberte ayudado. Saludos, Juan |
Respuesta: | Edwin Plauchu |
La verdad eso no pasara, la unica tecnica para dañar Hardware es conocida como codigo rojo y nada tiene que ver con el Assembler
en el Assembler solo puedes llevar a cabo operaciones permitidas por la arquitectura del cpu que manejas. Hechale ganas! |
Pregunta: | 25882 - CONFIGURACIONES DE RAID |
Autor: | Ernesto Rodríguez Game |
Deseo saber si me pueden ayudar dándome el dato de que son y en que consisten las configuraciones RAID o de arreglo de disco. He escuchado solamente nombrar RAID 1, RAID 0, RAID 5 y RAID 10 (he escuchado que es la unión de RAID 1 y RAID 0).
Agradeceré me indiquen si tienen el dato ustedes o en que sitio seguro de Internet puedo bajar la información solicitada. Saludos y mil gracias anticipadas, Ernesto Rodríguez G. |
Respuesta: | Mariano Cerdeiro |
Buenas.
Hasta donde yo se existen 3 tipos de raids y el 10 que es como bien decis una mezcla del 0 y el 1... El Raid 0 lo que hace es usar los discos en paralelo, con ello lo que se gana es velocidad, ya que si cada uno tiene un x ancho de banda, al escribir en paralelo tenes 2 veces x de ancho de vanda. Raid 1 duplica toda la informacion, osea que los discos son imagnes, si la usas con dos discos iguales (claro) te queda la capacidad de tan solo uno.. Raid 5 tiene redundancia como raid 1 pero en ves de tener todo 2 veces que ocupa mucho lugar tiene 1/3 de la informacion duplicada, que es la paridad, si tenes 3 discos podes utilizar raid 5, con menos no... Entonces si tenes 3 discos de 32gb en raid 5 tenes una capacidad de 64, ya que un disco lo perdes con la paridad. En el caso de que un disco se roma podes sacarlo y colocar uno nuevo el cual se cargara con los datos segun la paridad, osea no perdes informacion... Idem con raid 1. Raid 10 o 1+0 es la mezcla de raid 0 para velocidad y 1 para duplicar la info, se puede recien desde 4 discos claro... no hay mucho mas para saber, va de concepto, si queres luego implementarlo, se puede hacer por soft o por hard, claro por hard es mas rapido, la implementacion depende mucho del hard, ya que se configura como el bios y si es soft, de que estes corriendo, hoy en dia las placas tienen raid por hard... Saludos. |
Pregunta: | 25948 - VECTORES EN ASM |
Autor: | Oscar Castañeda |
¿Alguno me puede decir como declarar o simular vectores (y por ende matrices) en el Macro Asambles de Microsoft? |
Respuesta: | Paul Guerra |
He visto que declaran matrices en TASM de la siguiente forma:
<nombre_matriz> <tipo> <tamaño> dup(?) por ejemplo: matriz dword 0FFh dup(?) esto deja un espacio en memoria de 255 * sizeof(dword) = 1020 bytes. Nota: el ? le indica al ensamblador que el contenido de la matriz no sea inicializado. Yo, para acceder a un elemento de una matriz (de tipo dword en este caso), hago así: mov eax,offset matriz mov eax,[eax+4*indice] ;<-- en eax queda el valor Utilizo este método porque casi siempre son matrices dinámicas. |
Pregunta: | 25959 - DONDE ENCUANTRO UN LIBRO PARA TASM EN ESPAñOL |
Autor: | Gerson Samaniego |
Quiero saber si existen libros de Turbo Assembler 5.0 en español, si existen, donde puedo comprar uno?, puedo pedirlos por encomienda a Bogota D.C. |
Respuesta: | Cemendil Andayulme |
Una buena referencia de iniciación, barata y comprensible. Cubre tanto tasm como masm, para 16 bits.
Jon Beltran de Heredia, "Lenguaje Ensamblador de los 80x86" Anaya Multimedia, ISBN 84-7614-622-1 A título personal, creo que si te interesa ensamblar en serio deberías plantearte usar el 'nasm' (Netwide Assembler), que es libre, está bien documentado y es multiplataforma. Además, incorpora prácticamente todos los opcodes para todos los micros x86, incluso los más modernos. Un saludo |
Pregunta: | 26922 - ACCESO AL DISCO RíGIDO |
Autor: | Paul Guerra |
¿Hay alguna forma de que un programa de 32 bits acceda a un disco rígido sin utilizar las APIs de Windows? Cuando digo \'acceder al disco rígido\' me refiero a acceder a los sectores del disco, no a un archivo específico. |
Respuesta: | Ronny Rodríguez |
Se me ocurre que uses la INT 0x13 en ensamblador, debes colocar varios parámetros tales como CIL,HEAD,SECTOR,...etc.
para usarla desde un programa de 32 bits, podrías crear un DLL desde C/C++.... Espero que funcione.... si necesitas ayuda sobre el uso de la Interrupción, escribeme... bye |
Pregunta: | 27521 - PROGRAMA DE MICROPROCESADORES 8080 DE INTEL |
Autor: | roberto gomez |
de antemano muchas gracias por el favor que me van hacer , resulta que tengo un problema que resover con el lenguaje assembler 8080 de la materia microprocesadores , y no tengo idea de como resolverlo , yo conozco las instrucciones , pero no tengo la destreza de resoverlo solo , queria saber si me escriben las lineas de codigo . aqui va: Se requiere el diseño de un algoritmo que permita mover un bloque de 7 bytes de datos de informacion desde un bloque origen de direccion inicial en base octal de 003 040 y una direccion inicial en la misma base de 003 100 para el bloque destino . un programa en seudocodigo lenguaje 8080 que incluya : numero de linea -localidad de memoria-programa fuente-codigo de instruccion en el sistema octal - comentarios que refuercen la instruccion en cada linea . por favor mucho se los sabre agradecer , gracias le estoy enviando mi direccion de correo para cualquier informacion adicional . GRACIAS . |
Respuesta: | Manuel Redondo |
Hola Roberto,
para mover bytes de un sitio a otro, tan fácil como hacer un bucle con contador: MVI L,7 LXI BC,[@inicio] LXI DE,[@destino] bucle LDAX BC STAX DE INX BC INX DE DCR L JNZ bucle Para escribir las direcciones de memoria en octal basta saber cómo hacerlo en el copilador que utilizas. Saludos |
Pregunta: | 28091 - INTERRUPCIóN DE LA UNIDAD DE DISCO FLEXIBLE (INT 0EH) BLOQUE |
Autor: | Monika Luna |
Necesito que si es posible me puedan dar el código de un programa que mediante la interrupción de la unidad de disco flexible (int 0EH) pueda yo bloquear la unidad de disco flexible y me mande un mensaje a pantalla cuando la unidad se allá bloqueado.
Les agradezco mucho si alguien me puede ayudar. |
Respuesta: | Wilfredo Pérez Velázquez |
Hola colega:
Sobre tu pregunta, me surgen varias como: En que Sistema Operativo estás trabajando? Porque lo del mensaje a pantalla lo veo difícil en windows, pues mis conocimientos son de la interface de ensamblador para modo real, es decir MS-DOS. Y de este te puedo decir que el núcleo de todo sistema operativo no es reentrante y si tu quieres que cuando se acceda al disco A este te envíe un mensaje UHHHH. Al sistema operativo ir al disco A su interface contra pantalla no está habilitado hasta que no retorne de la operación realizada con el disco, es decir hay que crear un drive para que sea cargado al arrancar window y esa tarea no es en ensamblador. Ahora si deseas hacerlo a la antigua, te diré que la interrupción de disco flexible no s 0EH sino la 13H, pues la 0EH es un puntero a la tabla de control de acceso a las unidades de dsico flexible, tales como cantidad de sectores, velocidad del cabezal, tamaño de los sectores... Por la int 13H chequearías los servicios de acceso al disco y devolverías un error al acceder a discos flexibles... Pero eso es otro tema... Si lo deseas te envío luego un ejemplo para que arranques desde disco flexible tu ordenador y así deposites un programita residente que te haga lo deseado... Un saludo. |
|< << 2 3 4 5 6 7 8 9 10 11 12 >> >| |