Punteros ensamblador 16 bits

Iniciado por farresito, 27 Agosto 2010, 03:08 AM

0 Miembros y 1 Visitante están viendo este tema.

farresito

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:

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!

08l00D

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...

farresito

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!

08l00D

De nada  ;), y que bueno que se haya resuelto tu duda.