Foro de Assembler

Salu2 a todos...Estoy luchando contra Assembler!!! necesito entregar un proyecto, pero me falta como generar un numero aleatorio, si alguien tiene idea por favor agradezco la ayuda! ^^
 
Viejo Sairus, que pasó? Por qué tanta agresividad? Dime cuáles son las limitaciones, a ver qué se hace....

Perdon si te ofendi bro pero me cayo el comentario en muy mal momento....en fin te dire que las limitaciones comienzan por el echo de que ese algoritmo que tu mensionas es recursivo...cosa que es indecible en assembler (a menos que se usan macros, que no es el caso)....no se bro tal vez colocaste el post a la ligera y sin mala intencion...o tal ves lo hayas logrado sacar en assembler usando macros y no lo tubiste presente...de todas formas creo que si me pase con el comentario...y me disculpo por ello.

Pero no cambio mi afirmacion el algoritmo de congruencia lineal es inaplicable al asm de 16 o 32 bits, dadas las necesidades de recursion y abstraccion que son propias de los lenguajes de alto nivel y que no aplican a los lenguajes ensabladores dado que estos son solo una representacion simbolica de las instrucciones propias de la maquina.


DaniGG dijo:
Salu2 a todos...Estoy luchando contra Assembler!!! necesito entregar un proyecto, pero me falta como generar un numero aleatorio, si alguien tiene idea por favor agradezco la ayuda! ^^

Pues bro si te fijas un par de post atras llevamos una discucion muy seria de sobre como jenerar numewros aleatorios con asm, y hasta ahora la mejor idea que a surgido es leer un registro de memoria y usarlo como semilla para constriçuir el valor...esto con todas las limitaciones ya mencionadas.
 
sairus black dijo:
Perdon si te ofendi bro pero me cayo el comentario en muy mal momento....en fin te dire que las limitaciones comienzan por el echo de que ese algoritmo que tu mensionas es recursivo...cosa que es indecible en assembler (a menos que se usan macros, que no es el caso)....no se bro tal vez colocaste el post a la ligera y sin mala intencion...o tal ves lo hayas logrado sacar en assembler usando macros y no lo tubiste presente...de todas formas creo que si me pase con el comentario...y me disculpo por ello.

Pero no cambio mi afirmacion el algoritmo de congruencia lineal es inaplicable al asm de 16 o 32 bits, dadas las necesidades de recursion y abstraccion que son propias de los lenguajes de alto nivel y que no aplican a los lenguajes ensabladores dado que estos son solo una representacion simbolica de las instrucciones propias de la maquina.

No hay problema. El asunto es que yo no dije lo primero que se me ocurrió. Tampoco me las estoy dando de nada (lo digo por si esa es la impresión que doy).

Mira, el método del que hablo es recursivo en su definición, pero no estamos obligados a usar recursividad dado que no necesitamos obtener un valor específico de la secuencia. Únicamente nos interesa el "siguiente". Por lo tanto, el valor "anterior" (el primero de los cuales es nuestra semilla) puede almacenarse en una variable estática, y listo.

Teniendo en cuenta que la fórmula es:

Xn+1 = (aXn + c) mod m

Podemos obtener el siguiente número aleatorio con éstas dos "instrucciones":

Xsig = (aXant + c) mod m
Xant = Xsig

Siempre y cuando, Xant haya sido inicializado con nuestra semilla en alguna parte al inicio del programa.

....

El único problema que nos daría una CPU de 16bits tal vez sería que la secuencia más larga no lo es tanto como para usar la función aleatoria en cuestiones de simulación u otras cosas más complicadas. Pero igual, CPU de 16bits que se respete, nos permite obtener resultados de 32bits en double words. No será tan sencillo, como en una CPU de 32bits, pero de que se puede, se puede.
 
No hay problema. El asunto es que yo no dije lo primero que se me ocurrió. Tampoco me las estoy dando de nada (lo digo por si esa es la impresión que doy).

Mira, el método del que hablo es recursivo en su definición, pero no estamos obligados a usar recursividad dado que no necesitamos obtener un valor específico de la secuencia. Únicamente nos interesa el "siguiente". Por lo tanto, el valor "anterior" (el primero de los cuales es nuestra semilla) puede almacenarse en una variable estática, y listo.

Bueno creo que alfin entendi cual fue el motivo del lio.... de aver colocado esta explñicacion al comienso dçnada de esto.... checa yo crei que sugeriste usar el algoritmo para generar todo e un arbol de numeros como lo hace el shick de python ( esto incluye la semilla ) lo que es impracticable (ya explique por que); ahora que te explicas me doy cuewnta que tu idea no era para resolver todo el problema, sino para la parte del algoritmo...como dijimos el proceso es conseguir una semilla en hexadecimal, conbertirla a decimal y aplicarle un algoritmo de mutacion para que mejore su devergencia....

Tu explicación vale para el ultimo punto, pero su rendimiento dependera mucho de la calidad de la semilla...el problema original...en fin me alegro que se haya aclarado este lio....y ajala podamos crear el proc para el aleatorio...jeje....bueno PAz y suerte.
 
Que tal bros... pregunta abierta a todos...o mejor solicitud apremiente...donde me puedo consegir una table con el juego de instrucciones de los procesadores powerPC, Intel y AMD de 32 bits...lo necesito para un generador de godigo que estoy haciendo ya saben para la tabla de equivalencias...planeo que produsca codigo en sintaxis intel e AT&T, pero en el caso de PowerPC no se a que atenerme...jeje gracias.
 
Estoy tratando de interpretar por este programa en Assembler, el cual multiplica el numero 4 por el 5 … me arroja en el registro AX de 0010 …. No entiendo por que … acaso no debiera quedar alojado en AX el 24 …..??????

C:\>debug
-a
1554:0100 mov ax,4
1554:0103 mov bx,5
1554:0106 mul ax,bx
1554:0108 int 20
1554:010A

-t
AX=0004 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1554 ES=1554 SS=1554 CS=1554 IP=0103 NV UP EI PL NZ NA PO NC
1554:0103 BB0500 MOV BX,0005
-t
AX=0004 BX=0005 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1554 ES=1554 SS=1554 CS=1554 IP=0106 NV UP EI PL NZ NA PO NC
1554:0106 F7E0 MUL AX
-t
AX=0010 BX=0005 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1554 ES=1554 SS=1554 CS=1554 IP=0108 NV UP EI PL NZ NA PO NC
1554:0108 CD20 INT 20


Ahora si invierto el almacenamiento de los numero el resultado almacenado en AX es 0019 …. Tampoco entiendo

C:\>debug
-a
1554:0100 mov ax, 5
1554:0103 mov bx, 4
1554:0106 mul ax,bx
1554:0108 int 20
1554:010A
-t
AX=0005 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1554 ES=1554 SS=1554 CS=1554 IP=0103 NV UP EI PL NZ NA PO NC
1554:0103 BB0400 MOV BX,0004
-t
AX=0005 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1554 ES=1554 SS=1554 CS=1554 IP=0106 NV UP EI PL NZ NA PO NC
1554:0106 F7E0 MUL AX
-t
AX=0019 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1554 ES=1554 SS=1554 CS=1554 IP=0108 NV UP EI PL NZ NA PO NC
1554:0108 CD20 INT 20

Tambien agradecería me pudieran dar ejemplos con respecto a la Division que tampoco entiendo la forma en que procesa los números.

Gracias
 
ME PUDEN ENVIAR INFORMACIÓN A MI CORREO .... GRACIAS ..... Jose.Marulanda@hotmail.com

Perdon por la rudeza...pero no sea flojo viejo...aqui esta la documentacion en la s primeras paginas del foro.. al menos tomese la molestia de descargarlos.

Josemarulanda dijo:
Estoy tratando de interpretar por este programa en Assembler, el cual multiplica el numero 4 por el 5 … me arroja en el registro AX de 0010 …. No entiendo por que … acaso no debiera quedar alojado en AX el 24 …..??????

Bueno veamos que pasa aca... lo que suscede es que la multiplicacion y la division dan en ocaciones sobre flujos.. cosas de esas sugiero que descarles los manuales que estan en las primeras paginas del foro hay se explica el manejo de las operaciones fundamentales.
 
Josemarulanda dijo:
-a
1554:0100 mov ax,4
1554:0103 mov bx,5
1554:0106 mul ax,bx
1554:0108 int 20
1554:010A

-t
AX=0004 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1554 ES=1554 SS=1554 CS=1554 IP=0103 NV UP EI PL NZ NA PO NC
1554:0103 BB0500 MOV BX,0005
-t
AX=0004 BX=0005 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1554 ES=1554 SS=1554 CS=1554 IP=0106 NV UP EI PL NZ NA PO NC
1554:0106 F7E0 MUL AX
-t
AX=0010 BX=0005 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1554 ES=1554 SS=1554 CS=1554 IP=0108 NV UP EI PL NZ NA PO NC
1554:0108 CD20 INT 20

Hola,

MUL no funciona así como lo estás escribiendo. El multiplicando siempre es AX y va implícito. El multiplicador es el único operador que tienes que suministrar. Lée la documentación.

No me preguntes por qué Debug te acepta lo que escribiste, pero mira la instrucción que realmente se ejecuta en el trace (comando "t"). Debug ignora el operador adicional.

Por otro lado, toda la aritmética de Debug está en hexadecimal. Tu primera prueba es: AX=4, AX=AX*AX, AX=4*4, AX=16. 16 en hexadecimal es "10". La segunda te da 25, que es "19" en hexadecimal.

Que te rinda, y no des papaya.
 
[quote = DCowboy]
Por otro lado, toda la aritmética de Debug está en hexadecimal. Tu primera prueba es: AX=4, AX=AX*AX, AX=4*4, AX=16. 16 en hexadecimal es "10". La segunda te da 25, que es "19" en hexadecimal.
[/quote]

Umm baya eso si no me lo imagine... asi que el debug de winds no soporta tipado de datos.... bueno tambien es que se estan ingrasando datos directo a los registros y leyendolos en bruto...lo que implica que simpre aparescan en hexadecimal...

Ya en otro asunto el debug ese nunca me ha parecido una buena herramienta para aprender asm...para eso esta el emu o el tasm...en fin.
 
Ayuda con la int 33h (mouse)

Necesito q alguien m ayude a realizar algunos proyectos con el 8086...
Sobre todo como controlar l mouse con la INT 33H, especificamnt como saber la posicion del cursor...
He intntado con esto:
MOV AX,1 ;CARGAR MOUSE
INT 33H

MOV AX,3 ;CLIC MOUSE
INT 33H

Y hasta donde sé, CX retorna Posicion X pero en DX retorna Posicion Y...
Pero no noto ningun cambio en DX pero no se el porqué...

Bno si alguien tuviera algun programa o idea , se lo agradeceria si m lo hiciera llegar al correo: alexgio_4ever@hotmail.com



Bye y gracias adelantadas!!
 
buenas, quisiera pedir ayuda para enlazar un programa hecho en assembler, con algun lenguaje de alto nivel (no importa cual), si conocen algun buen tutorial y / o ejemplos de como hacerlo se los agradeceria.
Saludos
 
hola, hola

necesito una ayuda de alguien que sepa, hay $ si algo, es para el jueves una tareita jejeje por fa el que sepa me manda un MP o me dice por aca yo le comento lo que es.
 
Ummmmmm a que horas este foro se combitio en un muladar del comercio....en fin.

Hay bros finalmemte me he conseguido un procesador adm acros, que supuestamente soporta todo tipo de instrucciones asm he incluso se le pueden programar funciones nuevas usando codigo exadecimal...jeje voy a probar mi nuevo juguetito y os cuento que saco de eso. Paz y suerte.
 
Baya que cosas este foro a regresado a su epoca decadente... en fin aun sigo con la idea de mantenerlo vivo, por ahora me estoy centrando en usar asm paa mejorar el rendimiento de las rutinas en c/c++, pronto subre un review de estos trabojos, solo me resta llamar a todos los que han colaborado con el foro hasta ahora, para que continuen en el...PAz y suerte.
 
Hola a todos

Soy nuevo en este tema de Assembler, espero aprender mucho con ustedes y lograr un gran conocimiento.
Estaré leyendo los post que ustedes han estado colocando en este tema y si tengo alguna duda, les estaré preguntando.

Saludos
 
Hola a todos

Soy nuevo en este tema de Assembler, espero aprender mucho con ustedes y lograr un gran conocimiento.
Estaré leyendo los post que ustedes han estado colocando en este tema y si tengo alguna duda, les estaré preguntando.

Saludos

Bienvenido al foro bro, espero que pueda serte de ayuda....PAz y suerte.:chino:
 
Hola ps buscando sobre este tema lelgue aca al foro he estado leyendo ya qeu tengo un treabjo final en assembler quiciera saber si alguien me puede ayudar, tengo que hacer operaciones entre dos matrices pero el problema esque la matriz puede ser de cualquier dimension alguien me puede ayudar para saber como hacerla asi muchas gracias
 
Hola ps buscando sobre este tema lelgue aca al foro he estado leyendo ya qeu tengo un treabjo final en assembler quiciera saber si alguien me puede ayudar, tengo que hacer operaciones entre dos matrices pero el problema esque la matriz puede ser de cualquier dimension alguien me puede ayudar para saber como hacerla asi muchas gracias

Matrices en ensamblador?...... eso es una estructura de datos abstracta lo maximo que existe en 16 bits son los arrglos simples, por otro lado es posible usar esos arreglos para que contengan direcciones a espacios de memoria con otros arreglos, las matrices de asm en esto se parecen mucho a las de perl, y el definir el tamaño de la matriz dinamica si es algo mucho mas complicado, se supone que las matrices son esrtructuras estaticas no dinamicas lo mas que se me ucurre es que al iniciar el programa el usuario suministre de alguna forma el tamaño maximo deseado de la matriz.
 

Los últimos temas