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)
| | | |-+  Ensamblador suma de 32bits.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ensamblador suma de 32bits.  (Leído 3,149 veces)
D3MENTE

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ensamblador suma de 32bits.
« en: 28 Octubre 2015, 10:47 am »

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.


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.


En línea

xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: Ensamblador suma de 32bits.
« Respuesta #1 en: 29 Octubre 2015, 15:55 pm »

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:

Citar
edx = 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.


En línea

D3MENTE

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ensamblador suma de 32bits.
« Respuesta #2 en: 1 Noviembre 2015, 21:04 pm »

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!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Libro ASM Español (32bits)
ASM
aress 7 8,952 Último mensaje 6 Enero 2010, 10:03 am
por Eternal Idol
ASM 32Bits (Consola?)
ASM
S3kh 7 8,587 Último mensaje 19 Junio 2011, 00:19 am
por _Enko
Backtrack R2 ¿32bits o 64 bits?
GNU/Linux
OLM 3 5,237 Último mensaje 18 Marzo 2012, 01:29 am
por portaro
cluster de 32bits
Hardware
kamykaze 6 3,647 Último mensaje 31 Octubre 2014, 14:10 pm
por Minusfour_cierralo_o_baneamefull
Ejercicio en ensamblador suma-desplazamiento
ASM
Lariscal23 0 2,100 Último mensaje 16 Abril 2022, 11:31 am
por Lariscal23
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines