elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Problema básico con arrays
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema básico con arrays  (Leído 2,234 veces)
jlsogorb

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Problema básico con arrays
« en: 9 Febrero 2016, 12:07 pm »

Hola,
estoy empezando a aprender ensamblador (estoy con el libro de Kip R. Irvine: Lenguaje Ensamblador...) y al hacer uno de los ejercicios me he encontrado con un problema con los arrays.
Lo he reducido para intentar aislarlo y básicamente genera una serie de números (47) que los va introduciendo en cada uno de los elementos del array, pero luego intento acceder a ellos con otro loop y los valores me han cambiado. A ver si alguien me puede echar una mano. Gracias.
El código es:

; Manejo de arrays
INCLUDE Irvine32.inc
.data
arrayFibo DWORD 47 DUP(?)

.code
main PROC

mov ecx, LENGTHOF arrayFibo
mov ebx, 1
mov edx, 0

Serie :
mov eax, edx
mov edx, ebx
add ebx, eax
mov arrayFibo[ecx - 1], eax   ; mete el valor en cada elemento del array
call WriteDec                ; Imprime en pantalla
call Crlf                    ;Salto de línea
loop Serie

call Crlf; Salto de línea

; Muestra arrayFibo
mov ecx, LENGTHOF arrayFibo
S1:
mov eax, arrayFibo[ecx-1]   ; saca el valor de cada elemento del array
call WriteDec
call Crlf
loop S1

exit
main ENDP
END main


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problema básico con arrays
« Respuesta #1 en: 10 Febrero 2016, 11:48 am »

Estas usando direcciones consecutivas de BYTEs y no de DWORDs y escribiendo un DWORD por vez, es decir vas sobreescribiendo.

Al ser un array de DWORDs tenes que hacer:
mov arrayFibo[ecx * 4 - 4], eax
mov eax, arrayFibo[ecx * 4 - 4]


En línea

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
jlsogorb

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Problema básico con arrays
« Respuesta #2 en: 10 Febrero 2016, 15:36 pm »

Vaya, pensaba que se podía acceder de esa manera a cada elemento (arrayFibo[0], arrayFibo[1], arrayFibo[2]...etc), pero a lo que hay que acceder es a la dirección donde está cada elemento ¿ verdad?
Gracias
He rectificado la versión de la siguiente manera:

; Ejercicio 5.8.2.Muestra los primeros 47 numeros de la Serie Fibonacci
; y los graba en un archivo(el resultado se ve en hexadecimal)
INCLUDE Irvine32.inc
.data
nombreArchivo BYTE "Fibonacci47.txt", 0
arrayFibo DWORD 47 DUP(? )
manejaArchivo DWORD ?
tam_Bufer DWORD ?

.code
main PROC
mov tam_Bufer, SIZEOF arrayFibo    ; 47 elementos x 4bytes = 188bytes
mov ecx, LENGTHOF arrayFibo        ; pone el contador a 47
mov ebx, 1
mov edx, 1
mov esi, OFFSET arrayFibo

Serie :
mov eax, edx
mov edx, ebx
add ebx, eax
mov [esi], eax    ; en lugar de   mov arrayFibo[ecx-1], eax
add esi, 4           ; DWORD
call WriteDec       ; los muestra en pantalla para comprobar
call Crlf
loop Serie

; ABRE ARCHIVO
mov edx, OFFSET nombreArchivo
call CreateOutputFile
mov manejaArchivo, eax

; GRABA ARCHIVO
; eax sigue siendo el manejador del Archivo
mov edx, OFFSET arrayFibo
mov ecx, tam_Bufer
call WriteToFile

;CIERRA ARCHIVO
mov eax, manejaArchivo
call CloseFile

exit
main ENDP
END main
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con arrays en C#
.NET (C#, VB.NET, ASP)
Edu 4 4,273 Último mensaje 23 Noviembre 2010, 16:08 pm
por Edu
[C++] Problema con Arrays.. « 1 2 »
Programación C/C++
Wazzp 10 5,701 Último mensaje 16 Enero 2011, 20:33 pm
por Wazzp
[C] Problema con Arrays.
Programación C/C++
edr89 6 3,256 Último mensaje 27 Mayo 2013, 20:49 pm
por leosansan
Problema con Arrays
Java
alp 0 1,220 Último mensaje 4 Mayo 2014, 02:02 am
por alp
Problema con Arrays en C (no C++)
Programación C/C++
santibarquero98 7 2,260 Último mensaje 26 Mayo 2015, 23:41 pm
por Peregring-lk
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines