• Jueves 14 de Noviembre de 2024, 16:54

Autor Tema:  Manejo De Arreglos En Ensamblador  (Leído 7886 veces)

Dennis

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Manejo De Arreglos En Ensamblador
« en: Sábado 20 de Noviembre de 2004, 09:05 »
0
:comp:
Amigos del foro, estoy tratando de hacer un programita el cual ingrese datos o valores de caracter en un arreglo y luego quiero hacer comparaciones entre ellos. Pero no se como acceder a los elementos del arreglo, se que es [arreglo+1] [arreglo+2]... etc pero quiero implementarlo en un ciclo.

Podrian ayudarme a accesar a los elementos de una manera general para poder guardar y sacar los elementos del arreglo? Espero me ayuden y con esto acrecentar mas el conocimiento del ensamblador Gracias.  :hola:

deldar

  • Miembro activo
  • **
  • Mensajes: 93
    • Ver Perfil
Re: Manejo De Arreglos En Ensamblador
« Respuesta #1 en: Sábado 20 de Noviembre de 2004, 13:19 »
0
Primero , entiendo que con arreglo te refieres a vector o array :huh:¿correcto? .

Bien...  pues con la suposición anterior te cuento  :comp: :

Primero hay que saber que al ser el tamaño de cada posición de caracter esto implica que cada posicion es un byte el desplazaminento siempre comienza en cero.

En Masm creo recordar que se podía hacer igual que en un lenguaje de alto nivel:
suponiendo el vecto "V" de "n" posiciones  se podía plantear como: V[0], V[1]... o incluso utilizando un registro en lugar de los números: V[si]

Hay otra forma de hacerlo, que es tomando la dirección donde comienza tu vector, y marcando el desplazamiento en un registro, Supongamos definido el vector "V" de "n" posiciones:

lea si,V ; la primera posición del vector estará en el segmento ds desplazamiento si
mov ax, byte ptr ds:[si] ; pasamos la primera posición del vector a "ax"
inc si ;apuntamos a la segunda posición del vector
mov byte ptr ds:[si],cx ; pasamos "cx" a la segunda posición del vector
lea si,V ; esto para volver a la primera posición del vector en cualquier momento


Un saludo.
Quien de verdad sabe de qué habla, no encuentra razones para levantar la voz.