Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: farresito en 27 Agosto 2010, 03:08 am



Título: Punteros ensamblador 16 bits
Publicado por: farresito en 27 Agosto 2010, 03:08 am
Holas de nuevo,

Se ve que mi aprendizaje en ensamblador va muy justito, y vuelvo a tener problemas  :-\

Es muy sencilla mi pregunta, espero no molestaros:

En el libro comentan que el puntero, lógicamente está compuesto por la dirección y el desplazamiento, que ambos tienen un tamaño de 16 bits (sigo teniendo dudas sobre como usar el desplazamiento ). En este caso con solo usar el puntero normalmente ya vale pero en el caso de 16 bits, no se podria usar (mas bien dicho mover) directamente, pues solo transfeririamos una de las dos cosas, si no me equivoco. En el me proponen este ejemplo:

Código:
mov bx, pnum
mov ax, pnum+2
mov ds, ax

Que es lo mismo que la que lleva a cabo LDS, LFS... Pero quiero quitarme las dudas. Porque se efectua +2? Que le pasa a la memoria?

Gracias! Saludos!


Título: Re: Punteros ensamblador 16 bits
Publicado por: 08l00D en 28 Agosto 2010, 00:45 am
porque el +2 ? se aumenta pmem en dos bytes de memoria.. por ejemplo suponiendo que tengas definido en el segmento de datos una estructura de numeros de 16 bits (los q se suelen llamar short int en C).. [4,2,6,7]...
entonces usas pnum para señalar el comienzo del array .. osea el desplazamiento dentro del segmento.. y despues con un indice (2) indicas el siguiente elemento.. 2 bytes = 16 bits... lee acerca de los modos de direccionamiento del x86 .. es una de los conceptos mas importantes en ensamblador...


Título: Re: Punteros ensamblador 16 bits
Publicado por: farresito en 29 Agosto 2010, 00:43 am
Gracias por tu respuesta ;)

Me leí los modos de direccionamiento pero lo del desplazamiento... tenia dudas.

Por cierto, me resolviste la duda, o eso creo yo hasta que no vuelva a tener problemas.

No había caído en que en el desplazamiento desplazamos bytes (bah, no tenía ni idea de lo que se desplazaba ;). Sabía que me movía por la memoria pero no sabía del todo como) y ahora que dices 2 bytes = 16 bits entendí a la perfección.

Agradezco mucho tu ayuda 08l00D, gracias por tomarte el tiempo de responderme.

Saludos!


Título: Re: Punteros ensamblador 16 bits
Publicado por: 08l00D en 29 Agosto 2010, 01:12 am
De nada  ;), y que bueno que se haya resuelto tu duda.