Problema: Calcular la media en ASM

  • 0 Respuestas
  • 2623 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado snakingmax

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Blog de SnakingMax
    • Email

Problema: Calcular la media en ASM

  • en: Agosto 08, 2011, 06:07:02 pm
Bueno, hoy horrorc0de me propuso un problema por msn. Calcular la media de los siguientes valores:
7, 8, 5, 2, 9, 1, 0, 3
E imprimirla por pantalla.

Esta es mi solución para ASM Linux x86:

Código: (asm) [Seleccionar]
BITS 32
section .data

section .text

global _start
_start: ;
mov eax, 0 ; eax empieza valiendo cero (inicializar a cero)
add eax, 7 ; primera suma
add eax, 8 ; segunda suma
add eax, 5 ; tercera suma...
add eax, 2
add eax, 9
add eax, 1
add eax, 3 ; ultima suma.

mov ecx, 8 ; hay 8 sumandos
div ecx ; Dividimos entre 8 para calcular la media

add eax, 48 ; El caracter cero es el ASCII numero 48 asi que se lo sumamos al resultado
            ; para pasar el valor a codigo ascii y asi sacarlo por pantalla

push eax ; Metemos el valor de eax ya definitivo en la pila

; Ahora vamos a hacer la llamada a write, el syscall de linux numero 4
; que necesita 3 parámetros

mov ebx, 1 ; Primer parametro necesario para la llamada, Descriptor de fichero 1
mov ecx, esp ; Segundo parametro referencia al resultado que esta en ESP
mov edx, 1 ;Longitud del resultado (en bytes).
mov eax, 4 ;Writte es el syscall numero 4
int 0x80 ; llamar al sistema operativo

;Cuando termine la llamada, hay que finalizar el programa correctamente.

mov eax, 1          ; exit es la syscall número 1
mov ebx, 0          ; ebx es el primer parámetro, salida correcta, un 0
int 0x80
« Última modificación: Agosto 08, 2011, 07:50:37 pm por snakingmax »