Hola buenas,
Resulta que quería hacer un programa para sumar en esamblador, y nos dan un programa de prueba para ver como sería sin acarreo. Alguien podría explicarme el porque de sumar 4? pongo almoadilla en la parte del código.
.section .data
lista:		.int 1,2,10,  1,2,0b10,  1,2,0x10
longlista:	.int (.-lista)/4
resultado:	.int -1
.section .text
_start:	.global _start
	mov    $lista, %ebx
	mov longlista, %ecx
	call suma
	mov %eax, resultado
	mov $1, %eax
	mov $0, %ebx
	int $0x80
suma:
	push %edx
	mov $0, %eax
	mov $0, %edx
bucle:
	add (%ebx,%edx,4), %eax #Esta suma de 4 es la que me gustaría comprender
	inc       %edx
	cmp  %edx,%ecx
	jne bucle
	pop %edx
	ret
Muchas gracias y un saludo.
			
			
			
				Hola
El 4 que ves en el add, no suma nada ese 4 es la escala, se utiliza para calculos de offset mas complejos, o eso es lo que lei.
Lo que sucede es lo siguiente, edx multiplica a la escala a 4 y luego suma al offset de ebx, y este suma X cosa que este en ese offset.
Ejemplo:
Citaredx = 0 ------ 0 x 4 = 0 --- edx + ebx + 0
edx = 1 ------ 1 x 4 = 4 --- edx + ebx + 4
edx = 2 ------ 2 x 4 = 8 --- edx + ebx + 8
Simple, piensa que la macros que tienes arriba, la $lista que esta en ebx, cada sumero son 4 bytes, lo que haces con ese 4 es saltar de 4 en 4, para pasar al siguiente numero.
Cualquier cosa comenta.
Un saludo.
			
				Muchas gracias por responder. Efectivamente, me estaba imaginando lo de los 4 bytes que es lo que ocupa cada numero., pero tenía que resolver la duda.
Muchas gracias!