
Untitled
By: a guest on
Jul 10th, 2012 | syntax:
None | size: 1.25 KB | hits: 6 | expires: Never
.globl main #etiquetas son globales.
.globl multi
main: #etiqueta de inicio de codigo
pushl %ebp #prologo
movl %esp, %ebp
movl $2, (%esp) #Mueve el 2 a la parte superior
call multi #llama a multi
leave #epilogo
ret
multi: #etiqueta de inicio de multi
pushl %ebp #prologo
movl %esp, %ebp
subl $28, %esp #reserva 28 bytes
movl $1, -12(%ebp) #pone un 1 en y
jmp .L3 #salta a condicion while
.L4:
movl 8(%ebp), %edx #Carga la variable x en EAX
imull -12(%ebp), %edx #Multiplica al y con x
movl %edx, 12(%esp) #mueve la multiplicacion a registro
movl -12(%ebp), %edx #pone la y en EDX (datos)
movl %edx, 8(%esp) #lo mueve a registro
movl 8(%ebp), %edx #pone la x en EDX
movl %edx, 4(%esp) #lo mueve a registro
movl $.LC0, (%esp) #mueve la cadena al espacio de memoria de registros
call printf #llama a printf
addl $1, -12(%ebp) #aumenta 1 a y
.L3:
cmpl $10, -12(%ebp) #intruccion generica compara
jle .L4 #salta si es menor o igual
leave #epilogo de multi
ret
.LC0:
.string "%d * %d = %d\n" #etiqueta con string