Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Ensamblador | Cambiar el orden de un Array

3 abril, 2012

El siguiente código fuente cambia la posición de todos los elementos de un array de 100 elementos, el array estará compuesto por 100 elementos de números enteros.

Para probar el código tenéis que haber creado el array A y haber introducido los cien elementos que ocuparán desde la posición de memoria “A” a la posición de memoria
A + (100 elementos * 4 bytes), 4 bytes es lo que ocupa cada número entero.

Tendremos dos registros para conocer la posición en memoria en la que se encuentra el bucle (ebx,edx), y otros dos registros para hacer el intercambio de los valores (eax,ecx).

El código está hecho para la arquitectura (x86-64).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mov ebx, dword[A]  ; posición inicial de A
mov edx, dword[A+99*4] ; posición del último elemento de A
Bucle: 
cmp ebx, edx  ;  cuando tengan la misma posición   
              ; o se cruce el bucle
jge final
mov eax, dword[A+ebx]  ;carga la posición de memoria
mov ecx, dword[A+edx]  ;carga la posición de memoria
mov dword[A+edx], eax  ;cambia el valor
mov dword[A+ebx], ecx  ;cambia el valor 
add ebx, 4           ; aumenta la posición “inicial”
sub edx, 4           ; disminuye la posición “final”
jmp Bucle                
final:

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.