¿Como puedo acceder a direcciones de memoria sin usar eax?

Iniciado por Avoidance25, 10 Noviembre 2009, 17:59 PM

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

Avoidance25

Lo que quiero hacer es una funcion que me trabaje sobre 3 cadenas de texto, y que se le den las direcciones de memoria en las que comienzan las cadenas como argumentos.

Algo asi:
Código (asm) [Seleccionar]
;void MiFuncion(char *string1, char *string2, char *string3);
proc MiFuncion  string1, string2, string3

        ret
endp


Ahora, lo que NO quiero es tener que guardar estas direcciones de memoria en eax para acceder a la memoria, ya que tendria que estar rotando las 3 cadenas por eax.
¿Hay alguna forma de acceder a la direccion de memoria a la que apunta el contenido de una variable?. Tenia entendido que esto se puede lograr si no se usan los [], pero probe de muchisimas maneras y no me funciono :(
--Recuerda siempre que eres único... Exactamente igual que todos los demás.
--Diplomacia es el arte de decir "bonito perrito"... hasta que puedas encontrar una piedra.
--Morir es como dormir, pero sin levantarse a hacer pis.
--En las guerras, los soldados reciben las balas y los generales las medallas.

YST

Existen mas registros que eax , puedes mover una a ebx otra a edi y otra a esi :P


Yo le enseñe a Kayser a usar objetos en ASM

[L]ord [R]NA

Antes que todo... estas seguro que sabes programar en ASM, te recomiendo que leas sobre los registros y sobre el Stack

MCKSys Argentina

Pues EAX es el registro mas usado... :rolleyes:

Puedes intentarlo con ECX ó EDX ó el que mas te guste (trata de no tocar EIP  ;D)

Ahora, cuando salgas con algo como: "no quiero usar el stack", ahi si... cambia de lenguaje  :xD

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Avoidance25

Cita de: YST en 10 Noviembre 2009, 18:24 PM
Existen mas registros que eax , puedes mover una a ebx otra a edi y otra a esi :P
Ahhh, muchas gracias, voy a hacerlo de esa manera. Solo es que pensaba que se podia acceder directamente.....

Cita de: R.N.A. en 10 Noviembre 2009, 19:29 PM
Antes que todo... estas seguro que sabes programar en ASM, te recomiendo que leas sobre los registros y sobre el Stack
Pues obviamente estoy aprendiendo, si lo supiera todo no estaria preguntando.

Cita de: MCKSys Argentina en 10 Noviembre 2009, 21:46 PM
Puedes intentarlo con ECX ó EDX ó el que mas te guste (trata de no tocar EIP  ;D)
Ya entendi este punto con el mensaje de YST, grax.

Cita de: MCKSys Argentina en 10 Noviembre 2009, 21:46 PM
Ahora, cuando salgas con algo como: "no quiero usar el stack", ahi si... cambia de lenguaje  :xD
¿Que tiene de malo ASM?. De todas formas no pienso hacer todo el programa en ASM, solo la parte que de otra forma tardaria mucho tiempo en ejecutarse.




Pero la gran p***, se que la pregunta es de un principiante, pues en ASM eso soy, pero no es necesario que respondan de manera negativa. Todos fueron principiantes alguna vez, no?
--Recuerda siempre que eres único... Exactamente igual que todos los demás.
--Diplomacia es el arte de decir "bonito perrito"... hasta que puedas encontrar una piedra.
--Morir es como dormir, pero sin levantarse a hacer pis.
--En las guerras, los soldados reciben las balas y los generales las medallas.

MCKSys Argentina

El tema no es la pregunta, sinó el tipo de pregunta.

¿ Porqué no quieres usar EAX ?  :huh:

Eso no tiene lógica... Por eso las respuestas. ;D

Saludos!


MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Eternal Idol

Cita de: MCKSys Argentina en 11 Noviembre 2009, 01:27 AM
El tema no es la pregunta, sinó el tipo de pregunta.

¿ Porqué no quieres usar EAX ?  :huh:

Eso no tiene lógica... Por eso las respuestas. ;D

Es que hay que leer el hilo completo no solo el titulo  ;)
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Avoidance25

Cita de: MCKSys Argentina en 11 Noviembre 2009, 01:27 AM
El tema no es la pregunta, sinó el tipo de pregunta.

¿ Porqué no quieres usar EAX ?  :huh:

Eso no tiene lógica... Por eso las respuestas. ;D

Saludos!
No quiero usar eax porque necesito manejar 3 punteros de memoria. Sobre todo hice esta pregunta porque pensaba que se podia acceder a la memoria directamente, de hecho, creo que utilizaba variables de esta manera antes (hace mucho tiempo usaba ASM de 16 bits, y no volvi a tocar ASM hasta hace unos pocos dias).

Y se que puedo ir rotando, pero si hago el programa (o esta parte del programa al menos) en ASM es porque necesito que sea rapido, y si hay una forma de acceder directamente a estas direcciones de memoria me viene perfecto.



En fin, si no se puede hacer de esta manera voy a usar eax, ebx y edx.
--Recuerda siempre que eres único... Exactamente igual que todos los demás.
--Diplomacia es el arte de decir "bonito perrito"... hasta que puedas encontrar una piedra.
--Morir es como dormir, pero sin levantarse a hacer pis.
--En las guerras, los soldados reciben las balas y los generales las medallas.