Autor
|
Tema: Problema básico con arrays (Leído 2,272 veces)
|
jlsogorb
Desconectado
Mensajes: 2
|
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
Mensajes: 5.937
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 2
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema con arrays en C#
.NET (C#, VB.NET, ASP)
|
Edu
|
4
|
4,291
|
23 Noviembre 2010, 16:08 pm
por Edu
|
|
|
[C++] Problema con Arrays..
« 1 2 »
Programación C/C++
|
Wazzp
|
10
|
5,734
|
16 Enero 2011, 20:33 pm
por Wazzp
|
|
|
[C] Problema con Arrays.
Programación C/C++
|
edr89
|
6
|
3,280
|
27 Mayo 2013, 20:49 pm
por leosansan
|
|
|
Problema con Arrays
Java
|
alp
|
0
|
1,238
|
4 Mayo 2014, 02:02 am
por alp
|
|
|
Problema con Arrays en C (no C++)
Programación C/C++
|
santibarquero98
|
7
|
2,282
|
26 Mayo 2015, 23:41 pm
por Peregring-lk
|
|