abr
3
2012

Ensamblador | Cambiar el orden de un Array

Descarga el contenido del Artículo en PDF pdf Ensamblador | Cambiar el orden de un Array

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:

Artículos relacionados

Leave a comment


nueve + = 13

Entradas recientes

Recientes

  • admin: Ok, prueba. No obstante, si no lo consigues muestrame o envíame el código y te echo una mano. Suerte!
  • Anselmo: Gracias por la respuesta, hoy voy a intentar modificar el código. De hecho tengo una lista con muchos links,...
  • admin: Hola, Lo que quieres hacer no parece complicado, prueba esto: Modifica la función initialize para que le...
  • Anselmo: Gracias por los tutoriales, son muy buenos! Tengo una duda, espero me puedas orientar. En el código, veo que...
  • Navit: Buen artículo, tengo que probar dos o tres cosas que has puesto. Gracias